gpt4 book ai didi

python - 如何获取 pyd 文件的路径(又名相当于 __file__)

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:23 25 4
gpt4 key购买 nike

我有一个文件package.py,我正在尝试将其打包到package.pyd中。我在 package.py

中有以下语句
    CURR = os.path.dirname(os.path.realpath(__file__))

当我运行package.py时工作正常,但是当我将package.pyd导入另一个文件wrapper.py时,我得到以下内容错误信息

Traceback (most recent call last):
File "C:\Projects\Wrapper.py", line 1, in <module>
import package
File "package.py", line 40, in init package (package.c:4411)
NameError: name '__file__' is not defined

如何获取 .pyd 文件的位置。还有一种方法可以检查它是否作为 .pyd 或 .py 运行。

谢谢!

最佳答案

看来__file__ variable not available in module init 。但是你可以在模块加载后得到__file__:

def get_file():
return __file__

您可以检查__file__变量来了解加载了什么文件。还要记住 python 的搜索顺序:pyd (so), py, pyw(for windows), pyc

有关它的更多信息请参见 this question

发现两种工作方法。

  1. 涉及inspect模块:

    import inspect
    import sys
    import os

    if hasattr(sys.modules[__name__], '__file__'):
    _file_name = __file__
    else:
    _file_name = inspect.getfile(inspect.currentframe())

    CURR = os.path.dirname(os.path.realpath(_file_name))
  2. 导入来自同一级别的一些文件并使用其__file__属性:

    import os
    from . import __file__ as _initpy_file
    CURR = os.path.dirname(os.path.realpath(_initpy_file))

    实际上,它不一定是 __init__.py 模块,您可以添加并导入任何[空]文件以使其工作。

关于python - 如何获取 pyd 文件的路径(又名相当于 __file__),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40857480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com