gpt4 book ai didi

python - 对于嵌入式 Python,前缀 PYTHONPATH 不在 sys.path 中

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

结构如下:

- foobar
- __init__.py
- pyfoo
- __init__.py
- foo.pyd
- src
- __init__.py
- test
- __init__.py
- bar.py

我尝试加载foo.pyd来自bar.py 。因此我在 PYTHONPATH 中插入了一个条目与 \\?\C:\<path_to_foobar>\foobar\pyfoo .

bar.py然后我尝试

import foo

,从未找到 foo .

现在当我查看sys.path时,来自 PYTHONPATH 的条目缺失。另外,当我查看哪些路径 foo.pyd 时搜索到,仅sys.path的路径已考虑在内。

那怎么会sys.path不包含 PYTHONPATH 的所有路径?

<小时/>

编辑:

要测试我在导入之前插入日志的路径:

print("SP %s" % sys.path)
print("PP %s" % os.environ["PYTHONPATH"])

这给了我类似的东西:

SP ['\\\\?\\B:\\foobar\\pyfoo\\src\\test', 'C:\\python3\\win_x86_64\\python35.zip', 'C:\\python3\\win_x86_64\\DLLs', 'C:\\python3\\win_x86_64\\lib', 'C:\\python3\\win_x86_64']
PP \\?\B:\;\\?\B:\foobar\pyfoo;\\?\B:\foobar;\\?\B:\foobar\pyfoo

最佳答案

无法重现您的问题,在我的 Windows 7-x64 + python 3.4.4-x64 版本中它可以工作,PYTHONPATH 的内容存在于 sys.path 中:

set PYTHONPATH=\\?\L:\SO
python

>>> import sys
>>> sys.path
['', '\\\\?\\L:\\SO', ... , 'D:\\Python34-x64\\lib\\site-packages']

也就是说,作为一种解决方法,您可以将 PYTHONPATH 的内容强制写入 sys.path,如下所示:

import os,sys
sys.path.extend(os.getenv("PYTHONPATH").split(os.pathsep))

# now you can import foo
import foo

关于python - 对于嵌入式 Python,前缀 PYTHONPATH 不在 sys.path 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42113984/

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