【问题标题】:Embedded python not picking up PYTHONPATH嵌入式python没有拾取PYTHONPATH
【发布时间】:2023-03-26 22:27:01
【问题描述】:

我在嵌入 python 时遇到了一个非常奇怪的问题。如果我不指定PYTHONPATHPy_Initialize 将失败并显示ImportError: No module named site

如果我在 cmd 中设置PYTHONPATH 然后运行我的程序,它可以工作!

如果我以编程方式设置 PYTHONPATH (_putenv_s / SetEnvironmentVariable),它会再次以 ImportError 失败。

我已经检查过该值是用system("echo %PYTHONPATH%"); 设置的,我已经多次确保它是正确的路径。我不知道它为什么会失败......任何想法都值得赞赏。

设置:win10 x64,嵌入 C 程序的无堆栈 python 2.7 x86。

【问题讨论】:

  • 我将押注于文件系统重定向失败。没有看到任何代码、执行环境信息,甚至没有看到_putenv_s 的输入,这仍然是一个猜谜游戏。您需要改进您的问题以获得更好的答案。

标签: python c winapi python-stackless


【解决方案1】:

https://bugs.python.org/issue28245

我发现python37._pth 可以用来配置sys.path 信息。

python37.zip
.
Lib
Lib\site-packages

# Uncomment to run site.main() automatically
#import site

【讨论】:

    【解决方案2】:

    原来我必须先设置PYTHONPATH,然后延迟加载dll。我拥有的python库似乎是非标准/修改的。

    【讨论】:

    • 我试过了,但是不行。我的版本是 win32 上的 Python 3.7.0rc1 (v3.7.0rc1:dfad352267, Jun 12 2018, 06:15:26) [MSC v.1914 32 bit (Intel)]。另外,我打印 sys.path 找不到 PYTHONPATH 内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 2022-01-25
    • 2013-01-09
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多