【发布时间】:2018-06-30 20:25:57
【问题描述】:
我正在尝试创建一个 Python 发行版,我必须在其中包含源代码和编译后的二进制文件。 (是的,我阅读了反对/支持添加.pyc 的论据,但我的用例需要添加.pyc)。在 Windows 中运行我的步骤,源代码和编译后的二进制文件都添加到输出文件中(我使用了 sdist 和 bdist_wheel)。
假设我有以下结构:
root
+--folderA
+--alpha
+--beta
+--__init__.py
+--folderB
folderA 包含源代码,而folderB 包含其子目录中的其他文件。
已完成的步骤:
- 使用
compileall编译模块 -
alpha中的源已删除。保留beta中的来源。 - 运行
python setup.py sdist|bdist_wheel
我在 setup.py 中使用了find_packages() 来检测模块。未检测到alpha 中的模块,而找到了beta 中的模块。
在 Windows 中的结果 .tgz 和 .whl 文件中,所有需要的文件都在那里。一切都很好。
但是,当在 Linux(具体是 Ubuntu)中执行相同的过程时,只添加了 beta 中的模块和 folderB 中的一些模块,但 没有其他不同类型的文件和模块 @ 987654339@。 sdist 将仅提供源,而 bdist 和 bdist_wheel 将仅提供 .pycs。我知道sdist 用于分发源文件,而bdist 用于二进制文件。
我的问题是为什么 Windows 中的行为不同,是否可以在 Linux 中产生相同的输出(源和 .pyc 以及其他文件)?
我正在使用 Python 2.7。
【问题讨论】:
标签: python linux setuptools python-wheel sdist