【发布时间】:2014-06-08 07:02:20
【问题描述】:
Python 使用PYTHONPATH 环境变量来确定它应该在哪些文件夹中查找模块。
您可以通过修改 sys.path 来玩弄它,这对于纯 Python 模块非常有效。
但是当一个模块使用共享对象文件或静态库时,它会在LD_LIBRARY_PATH(在 linux 上)中查找那些,但这不能轻易更改,并且据我所知取决于平台。
这个问题的快速修复当然是设置环境变量或调用像LD_LIBRARY_PATH=. ./script.py这样的脚本,但是你必须为你打开的每个新shell重新设置它。
此外,在我的情况下,.so 文件将始终与.py 文件位于同一目录中,但很可能会移动到另一个绝对路径,所以我想在每次调用脚本时自动设置它们.
如何编辑 Python 解释器在运行时独立于平台查找库的路径?
编辑:
我已经尝试过os.environ['LD_LIBRARY_PATH'] = os.getcwd(),但无济于事。
【问题讨论】:
-
这可能应该由模块安装程序通过将共享库安装在标准(尽管可能是特定于机器)位置来处理。
-
...使用 virtualenv :) @chepner
-
@chepner 想了想,安装软件时需要考虑平台依赖性。此外,Windows 不使用
.so或.a,而是使用.dll和.lib-files,并且我的库必须以一种或另一种方式重新编译。我只是觉得一个快速而肮脏的解决方案可以简化测试和开发。
标签: python import environment-variables sys