我面临与此处提出的问题类似的情况:Python Import error on installed ruamel.yaml in custom directory
我知道我们将希望使用某种形式的 python 环境隔离机制,如 virtualenv 来创建可以运行我们的 python 代码的隔离环境。然而,在我所在的行业中,我们编写几个 python 包的情况并不少见,这些包将需要在其他带有自己的 python 解释器的现成软件中使用,因此我们受到限制软件(例如autodesk maya)使用的python版本,我们没有使用virtualenv的灵活性。
pip install --install-option="--prefix=\\vm-fs-001\prod\sww\proj\general\python\python-2.7.14" <package_name>
我们使用与上述命令类似的东西将我们写入的这些代码部署到自定义的 3rd 方目录中。我们将环境设置为包含第 3 方部署文件夹的站点包和脚本。
PYTHONPATH=\\vm-fs-001\prod\sww\proj\general\python\python-2.7.14\Lib\site-packages;%PYTHONPATH%
PATH=\\vm-fs-001\prod\sww\proj\general\python\python-2.7.14\Scripts;%PATH%;
在这种情况下,该软件与 python 2.7.14 解释器捆绑在一起,我们编写了一个需要 ruamel.yaml 的包
尝试在 3rd 方软件的 python 解释器中导入 ruamel.yaml 时出现以下错误。
ImportError: No module named ruamel.yaml
即使我要从标准 python 2.7.14 解释器中导入 ruamel,我也会得到相同的 ImportError。
λ python
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ruamel.yaml
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named ruamel.yaml
>>> import sys
>>> sys.path
['', '\\\\vm-fs-001\\prod\\sww\\proj\\general\\python\\python-2.7.14\\Lib\\site-packages', 'C:\\windows\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', '\\\\vm-dc-001\\RedirectedFolders$\\nelson.lim\\AppData\\Roaming\\Python\\Python27\\site-packages', 'C:\\Python27\\lib\\site-packages']
>>>
但是,如果我在__init__.py
此处添加:\\vm-fs-001\prod\sww\proj\general\python\python-2.7.14\Lib\site-packages\ruamel\__init__.py
并使 ruamel 文件夹成为包而不是命名空间文件夹,则导入错误将消失。
导入带有安装在自定义文件夹中的命名空间的包似乎存在问题。
我该如何解决这个问题?