假设您有一个名为proj
的项目,在这个项目中,您有以下结构:
proj/
dists/
doc/
src/
__init__.py
xyz.py
abc.py
test/
setup.py
正如您所看到的,项目的所有内容都在src
子文件夹中。如何从src
文件夹中创建distutils分发包?
我天真的想法是,遵循the tutorial,应该是这样写setup.py
:
#omitting basics
setup(
name='proj',
packages=['src'],
package_dir={'proj':'src'}
)
但在将生成的包安装到我的系统之后,我仍然需要导入src.xyz
,而不是proj.xyz
,这将是目标和预期的结果。
在调用
setup
函数之前,可以尝试将src
文件夹添加到PYTHONPATH
:另外,为了安全起见,您可以更改工作目录:
在那之后,一切都会好起来的。
其他一些打包应用程序的工具支持从内部打包。我以为是setuptools,原来是PyInstaller。但基本上,这是应该做的,只够你的包裹直接进口。原来distutils有
package_dir
指令。这是您应该使用的,但是它可能只通过将您的包添加到PYTHONPATH
来工作。这是由于此处报告的setuptools中的错误造成的:https://github.com/pypa/setuptools/issues/250
基本上,它可以工作,但不在dev模式下。现在,您有3个解决方案:
src
包符号链接为proj
(并在发送时忽略它),它将在框外工作,但已损坏src
更改为proj
src
中创建子目录proj
,并使用以下选项:您可以通过将Python包文件放入
proj/
目录来修复它:并将
setup.py
更改为:distutils不需要它,但其他工具可能希望
__init__.py
文件的父目录名与Python包名相同,即本例中的proj
。相关问题 更多 >
编程相关推荐