如何在版本化包文件夹中调用python模块?
我需要编写在主机应用程序中运行的python代码。python代码应该部署在宿主应用程序的特定文件夹下。我必须将我的条目python模块放在特定文件夹的根目录下。我想把我所有其他的python代码和c/c++dll放在一个子文件夹下,我更喜欢把这个子文件夹命名为XXX-1.0,数字是我python代码的版本。条目python模块只是简单地调用子文件夹下的python模块如何在版本化包文件夹中调用python模块?,python,Python,我需要编写在主机应用程序中运行的python代码。python代码应该部署在宿主应用程序的特定文件夹下。我必须将我的条目python模块放在特定文件夹的根目录下。我想把我所有其他的python代码和c/c++dll放在一个子文件夹下,我更喜欢把这个子文件夹命名为XXX-1.0,数字是我python代码的版本。条目python模块只是简单地调用子文件夹下的python模块 通过这种方式,不同版本的python代码可以一起部署而不会发生冲突。我能知道这是可能的还是不可能的吗?谢谢。如果您创建了.pt
通过这种方式,不同版本的python代码可以一起部署而不会发生冲突。我能知道这是可能的还是不可能的吗?谢谢。如果您创建了
.pth
文件,例如X.pth
,并将XXX-1.0
作为内容放在里面
XXX-1.0\
- xxx.py
X.pth
然后,您可以导入xxx
注意:仅测试站点软件包文件夹,我不确定您是否可以将子文件夹放在任何位置
编辑:
例如,wxPython就是这样做的,因为它可以在同一台机器上有多个版本
wx-2.8-msw-unicode \
wx
\
more stuff
wx.pth (wx-2.8-msw-unicode)
我是这样做的:
tools
|-- packageA
|-- packageA-1.0
|-- packageA
|-- modules
|-- packageA-2.0
|-- packageA
|-- modules
|-- packageB
...
这样,当您想要升级时,只需将/packageA/packageA-2.0添加到PYTHONPATH,您仍然可以执行
导入packageA
我不确定我是否正确理解了您的问题,但这里有一个简单的方法,可以让多个包版本不发生冲突
目录结构:
C:\tmp\eggs>dir /B /S
C:\tmp\eggs\libs
C:\tmp\eggs\test.py
C:\tmp\eggs\libs\foo-1.0.egg
C:\tmp\eggs\libs\foo-2.0.egg
C:\tmp\eggs\libs\foo-1.0.egg\foo.py
C:\tmp\eggs\libs\foo-2.0.egg\foo.py
现在,文件的内容如下:
# contents of C:\tmp\eggs\libs\foo-1.0.egg\foo.py
version=(1,0)
#C:\tmp\eggs\test.py的内容:
导入系统
sys.path.insert(1,“libs”)
从pkg_资源导入需要
require('foo1.5'
,或'foo'
输出将更改为(2,0)
您可以在文档中找到详细信息
# contents of C:\tmp\eggs\libs\foo-2.0.egg\foo.py
version=(2,0)
#contents of C:\tmp\eggs\test.py:
import sys
sys.path.insert(1, 'libs')
from pkg_resources import require
require('foo<1.5')
import foo
print foo.version
# will output (1,0)