Python 使用setuptools在root下移动包
这是(我的)项目结构的一部分:Python 使用setuptools在root下移动包,python,packages,setuptools,distutils,Python,Packages,Setuptools,Distutils,这是(我的)项目结构的一部分: <root> |- src |-main |-python |- common |- constans |- controller |- resources |- rest - setup.py 我有一个MANIFEST.in文件,它基于我在网上找到的一个示例: include src.mai
<root>
|- src
|-main
|-python
|- common
|- constans
|- controller
|- resources
|- rest
- setup.py
我有一个MANIFEST.in文件,它基于我在网上找到的一个示例:
include src.main.python fp README COPYING
recursive-include src\main\python *
当我使用命令
python setup.py sdist
时,它会在根目录下创建一个目录“dist”,并将我的项目保存在zip文件中。我的包(common、mappers和rest)位于src\main\python
下,而不是根文件夹下。如何将它们放在根文件夹下?我使用pybuilder创建了我的项目,这里有一个关于如何创建项目等的很好的教程。当您的项目已经创建并且代码已经准备好构建时,请转到build.py文件所在的根目录并使用
pyb
将在项目的根目录中创建目标文件夹。
转到项目的target/dist/name\u
应该有一个setup.py文件。
在pybuilder为您生成的这个设置文件中,确保zip\u safe=False。这是我的安装文件的摘录:
from setuptools import setup
if __name__ == '__main__':
setup(
name = 'my_project',
version = '1.0.dev0',
....
packages = ['my_project', 'my_project.common', 'my_project.mappers', 'my_project.rest'],
py_modules = ['__init__'],
classifiers = ['Development Status :: 3 - Alpha', 'Programming Language :: Python'],
entry_points={
'console_scripts':
[]
},
# data files
# package data
zip_safe=False
)
在此处使用以下命令:
python setup.py install
将根据setup.py文件中的信息在Lib/site包中创建文件夹:
c:\python27\lib\site-packages\my_project-1.0.dev0-py2.7.egg
在您的site packages文件夹中有一个名为easy install.pth
的文件,其中应该有一个包含此文件名的条目:
import sys; sys.__plen = len(sys.path)
./loggingserver-0.1dev_r0-py2.7.egg
.....
./my_project-1.0.dev0-py2.7.egg
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)
此文件中的目录用作挂钩。现在,您可以从任何项目中引用my_project-1.0.dev0-py2.7.egg的子文件夹
因此,让我们假设my_project-1.0.dev0-py2.7.egg
的结构如下:
-my_project
- common
- mappers
- rest
- EGG_INFO
from my_project import common
参考资料如下:
-my_project
- common
- mappers
- rest
- EGG_INFO
from my_project import common
可能是o/t,但您的
设置中有一个输入错误。