问题描述
是python打包的新手(但不是python),所以如果问题无处不在,请原谅。
尝试打包一个python模块( project-A ),该模块使用来自另一个目录( lib )的一堆常见脚本。
碰巧了解如何在最终的软件包工件中包含此 lib 目录。
setup.py,工作目录结构以及我如何计划最终软件包安装结构如下所示。
其他几个问题-
- lib 的相对位置在我的工作目录和已安装的软件包之间变化。是否可以在两种情况下都导入而不更改代码?
- 此结构是否更好?还是我应该将与project_A相关的所有内容移到其自己的目录下,这样每个项目都将具有自己的setup.py,MANIFEST,conf目录等。( lib 的位置>保持不变,不确定每个软件包是否应具有自己的测试目录 如果有人在git仓库之外运行
- release = subprocess.check_output失败。在这种情况下是否可以添加默认值?
- 我遇到的一个例子是lib移至
/usr/lib/python3.4/site-packages/project_A/_lib
。喜欢这种方法。任何想法如何在setup.py 中实现
setup.py (当前创建两个包)
setup(
name='project_A',version='0.15',# release is not supported in bdist rpm
#release=subprocess.check_output(["git","rev-list","--count","--first-parent","HEAD"]).rstrip(),# if creating outside git
release="0.0.1",author='foo',author_email='hello@world.com',url='http://www.hello.com',long_description="README.txt",#install_requires=['bottle','requests','supervisor'],# currently not working
#dependency_links = ['https://pypi.python.org/packages/source/b/bottle/bottle-0.12.8.tar.gz'],packages=['project_A'],include_package_data=True,package_data={'images' : ['hello.gif']},data_files=[
#('/etc/init.d/',['project_Actl']),# some startup script
('/var/log/project_A',[]),('/etc/project_A/conf/',['conf/project_A.conf'])
],description="Hello World testing setuptools",tests_require=['pytest'],cmdclass = {
'test': PyTest,'clean': CleanCommand
}
)
Project-A安装目录-
/usr/lib/python3.4/site-packages/project_A
|
|____project_A/
| |
| |____project_A.py
|
|____lib
| |
| |______init__.py
| |____parseArguments.py
| |____setupLogger.py
| |____cleanup.py
Python工作区目录-
.
|____setup.py
|
|____MANIFEST.in
|
|____README.md
|
|____project_A/
| |
| |____project_A.py
|
|____project_B/
| |
| |____project_B.py
|
|____conf/
| |
| |____project_A.conf
| |____project_B.conf
|
|____lib
| |
| |______init__.py
| |____parseArguments.py
| |____setupLogger.py
| |____cleanup.py
|
|
|____images/
| |____hello.gif
|
|____tests
| |
| |____project_A
| | |____test_B_example.py
|
| |____project_B
| | |____test_A_example.py
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)