【发布时间】:2014-09-15 10:51:57
【问题描述】:
我有一个典型的项目结构,如下所示:
EngineEmulator
src
ship
engine
emulator
mapping
tests
emulator
mapping
utils
common
doc
....
tools
....
setup.py
MANIFEST.in
setup.cfg
README.rst
我的 setup.py 如下所示:
from setuptools import setup, find_packages
setup(
name='Engine',
version=1.0.0,
description='Engine Project',
package_dir={'': 'src'},
packages=find_packages(
'src',
exclude=["*.tests", "*.tests.*", "tests.*", "tests"]),
install_requires =['pycrypto',
'kombu >=1.1.3'],
author='Demo',
author_email='demo@eliza.net'
license='MIT',
classifiers=[
'Topic :: Demo Engine',
'Development Status:: 3 - Iteration',
'Programming Language :: Python -2.6'
]
)
我的 setup.cfg 如下所示:
[egg_info]
tag_build = .dev
tag_svn_revision = 1
[rotate]
#keep last 15 eggs, clean up order
match = .egg
keep = 15
我的 MANIFEST.in 如下所示:
include README.rst
recursive-include src/ship/Engine
prune src/utils
prune src/ship/tests
prune tools/
当我运行 python setup.py bdist_egg 和 python setup.py bdist_rpm 时,我得到了 egg 文件和两个 rpm 文件(noarch.rpm 和 src.rpm)。
在我的目标机器上,当我运行easy_install <generated egg file> 时,我的 eg.info 文件被复制,但源文件没有被复制到 /usr/lib/python2.6/site-packages。我原以为我会有一个名为 Engine 的目录。
谁能指出我做错了什么?提前致谢。
【问题讨论】:
-
@ArunaDev 假设您的项目是纯 Python 项目(项目中没有 C 或 C++ 代码),我建议使用
sdist而不是egg。我还假设,您安装在与创建 egg 相同的操作系统中。学习使用pip,并尽可能停止使用easy_install。pip提供更好的服务。您应该能够$ pip install <package_file>从 egg、sdist 或其他格式安装。 -
pip 不支持 egg。 sdist 可以,但我们希望在交付给客户之前预先构建一些 C 代码。此外,出于其他我不会讨论的原因,我们只想发送 .pyc 文件。
-
@ArunaDev 抱歉,
pip和鸡蛋我错了。您可能会发现使用wheel格式很方便 - 这是安装软件包的更快方法。但它似乎包含源 python 文件,因此它可能不符合您的标准。无论如何,一旦我错误地删除了我的 py 文件并在谷歌搜索、测试、反编译和编辑的一个小时内设法从 pyc 文件中获取可用源,“只有 pyc”并不是那么大的胜利。 -
是的,这并不是易于反编译的原因……它对于支持的东西要容易得多。
标签: python rpm setuptools egg