如何在版本化包文件夹中调用python模块?

如何在版本化包文件夹中调用python模块?,python,Python,我需要编写在主机应用程序中运行的python代码。python代码应该部署在宿主应用程序的特定文件夹下。我必须将我的条目python模块放在特定文件夹的根目录下。我想把我所有其他的python代码和c/c++dll放在一个子文件夹下,我更喜欢把这个子文件夹命名为XXX-1.0,数字是我python代码的版本。条目python模块只是简单地调用子文件夹下的python模块 通过这种方式,不同版本的python代码可以一起部署而不会发生冲突。我能知道这是可能的还是不可能的吗?谢谢。如果您创建了.pt

我需要编写在主机应用程序中运行的python代码。python代码应该部署在宿主应用程序的特定文件夹下。我必须将我的条目python模块放在特定文件夹的根目录下。我想把我所有其他的python代码和c/c++dll放在一个子文件夹下,我更喜欢把这个子文件夹命名为XXX-1.0,数字是我python代码的版本。条目python模块只是简单地调用子文件夹下的python模块


通过这种方式,不同版本的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)