2024-04-27 04:24:45 发布
网友
我已经创建了python模块,但它们位于不同的目录中。在
/xml/xmlcreator.py /tasklist/tasks.py
在这里,任务.py正在尝试导入xmlcreator,但两者的路径不同。一种方法是包括xmlcreator.py在Python道上。但是,考虑到我将要发布代码,这似乎不是建议的正确方法here。我应该如何在任何子目录中写入xml,或者应该包含在哪个子目录中?在
最好的方法是在您定义的单个顶级包中创建子包。然后你把这些放在一个包裹里一起装运。如果您使用的是setuptools/Distribute,并且希望单独分发它们,那么您还可以定义一个“namspace包”,该包将安装在其中。你不需要用任何难看的东西系统路径黑客。在
创建如下目录树:
mypackage/__init__.py mypackage/xml/__init__.py mypackage/xml/xmlcreator.py mypackage/tasklist/__init__.py mypackage/tasklist/tasks.py
__init__.py文件可能为空。它们将目录定义为Python将在其中搜索的包。在
__init__.py
除非要使用命名空间包,mypackage/__init__.py应该包含:
mypackage/__init__.py
您的setup.py文件包含:
setup.py
... namespace_packages=["mypackage"], ...
那么在你的代码中:
from mypackage.xml import xmlcreator from mypackage.tasklist import tasks
在你需要的地方都可以买到。在本例中,您只需要使一个名称全局唯一,即mypackage名称。在
mypackage
为了开发代码,您可以通过
python setup.py develop user
这将设置本地python环境,以便在工作区中查找包。在
当我启动一个新的Python项目时,我立即编写它的setup.py和{a1},这样我就可以:
python setup.py develop
所有的东西都神奇地加入到我的Python身上。如果您从virtualenv中执行它,它会更好,因为您不需要在整个系统范围内安装它。在
以下是更多信息:
http://packages.python.org/distribute/setuptools.html#development-mode
你是将两个模块单独打包发布呢?在
如果是前者,那么您可能希望让您的用户安装xml模块(我称之为其他名称:)以便在默认情况下,它已经在Python的路径上,并将其声明为tasklist模块的依赖项。在
如果两者都是作为一个bundle分布的,那么relative imports似乎是最好的选择,因为您可以控制路径之间的相对位置。在
最好的方法是在您定义的单个顶级包中创建子包。然后你把这些放在一个包裹里一起装运。如果您使用的是setuptools/Distribute,并且希望单独分发它们,那么您还可以定义一个“namspace包”,该包将安装在其中。你不需要用任何难看的东西系统路径黑客。在
创建如下目录树:
__init__.py
文件可能为空。它们将目录定义为Python将在其中搜索的包。在除非要使用命名空间包,
^{pr2}$mypackage/__init__.py
应该包含:您的
setup.py
文件包含:那么在你的代码中:
在你需要的地方都可以买到。在本例中,您只需要使一个名称全局唯一,即
mypackage
名称。在为了开发代码,您可以通过
这将设置本地python环境,以便在工作区中查找包。在
当我启动一个新的Python项目时,我立即编写它的
setup.py
和{a1},这样我就可以:python setup.py develop
所有的东西都神奇地加入到我的Python身上。如果您从virtualenv中执行它,它会更好,因为您不需要在整个系统范围内安装它。在
以下是更多信息:
http://packages.python.org/distribute/setuptools.html#development-mode
你是将两个模块单独打包发布呢?在
如果是前者,那么您可能希望让您的用户安装xml模块(我称之为其他名称:)以便在默认情况下,它已经在Python的路径上,并将其声明为tasklist模块的依赖项。在
如果两者都是作为一个bundle分布的,那么relative imports似乎是最好的选择,因为您可以控制路径之间的相对位置。在
相关问题 更多 >
编程相关推荐