我想将我的项目安装为文件夹而不是.egg文件.所以我在setup.py文件中的setup函数中使用了zip_safe = False
但是当我运行这个时,我的项目被安装为.egg文件而不是/Library/Python/2.7/site-packages中的目录.下面是我的setup.py文件
from setuptools import setup, find_packages
setup(name = "my-project",
version = "0.1",
description = "Python version of my-project",
author = "Priyal Jain",
author_email = "jpriyal@gmail.com",
license="Apache 2.0",
keywords="Python my project",
package_dir={'': 'lib'},
#packages=find_packages('lib'),
packages= ['abc','pqr'],
package_data={
'abc.sample': ['*.yml']
},
zip_safe= False,
scripts = ["abc"],
classifiers=[
'Environment :: Console',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
'Intended Audience :: System Administrators',
'Intended Audience :: Telecommunications Industry',
'Operating System :: OS Independent',
'Programming Language :: Python',
], …
Run Code Online (Sandbox Code Playgroud) 我有几个共享常见模块的python项目.到现在为止,我已经......咳嗽......保留公共代码的多个副本并手动同步.但我显然更愿意做别的事情.
它现在在我看来,好像zc.Buildout可能是我需要的.我想我应该做的是将我系统的每个可重用组件放入一个单独的egg中,然后使用buildout将它们组装到项目中.
我也在想,对于任何特定的模块,我应该将单元测试放入一个单独的包或蛋中,这样我就不会在每个项目中安装组件的单元测试副本.我只想在我的库开发的地方进行单元测试,而不是在刚刚使用的地方.
所以也许我想要这样的东西
projects
lib1
tests
code
lib2
tests
code
app1
tests
appcode
app2
tests
appcode
Run Code Online (Sandbox Code Playgroud)
等等
app1和app2都是独立的应用程序,有自己的代码和测试,但也包括和使用lib1和lib2.和lib1/test,lib1/code,lib2/test,lib2code,app1,app2是分开的鸡蛋.这听起来不错吗?
但是,我现在感到困惑.我假设当我开发app1时,我希望buildout将lib1,lib2和app1的副本放到一个单独的工作目录中,而不是直接将这些库的副本放在app1下.但是,这如何与我的SVN源代码控制一起使用?如果使用buildout动态构造工作目录,它不能是一个实时SVN目录,我可以从中检查更改回存储库?
我是否误解了如何使用buildout?我会更好地采用完全不同的方法吗?如何在项目之间混合源代码控制和模块重用?
更新:感谢两位目前已回答此问题的人.我正在尝试更多这个.
当我运行python setup.py install
django时,它会生成一个egg文件.
Python egg文件的用处是什么?
比方说,例如FooPackage-1.1和FooPackage-1.2都作为鸡蛋安装在dist-package中.如何导入我需要的那个?
例如,在Linux上安装IPython(未安装setuptools)我已经安装了IPython site-packages\IPython
.
在执行相同的命令后,在Windows上安装IPython(其中IPython需要setuptools)
python setup.py install
Run Code Online (Sandbox Code Playgroud)
我安装了IPython site-packages\ipython-0.13.2-py2.7.egg\IPython
有没有办法安装模块"旧方式"即进入site-packages\IPython
?
我想在python egg文件中打包.json文件.
例如:boto包有endpoints.json文件.但是当我运行python setup.py bdist_egg时,它不包含egg中的json文件.如何在鸡蛋中包含Json文件?
如何在鸡蛋中包含*.json文件?
下面是setup.py代码
from setuptools import setup, find_packages, Extension
setup(
name='X-py-backend',
version='tip',
description='X Python backend tools',
author='meme',
packages=find_packages('python'),
package_dir={'': 'python'},
data_files=[('boto', ['python/boto/endpoints.json'])],
namespace_packages = ['br'],
zip_safe=True,
)
setup(
name='X-py-backend',
version='tip',
packages=find_packages('protobuf/target/python'),
package_dir={'': 'protobuf/target/python'},
namespace_packages = ['br'],
zip_safe=True,
)
Run Code Online (Sandbox Code Playgroud) 我试图cx_freeze
在Windows 7上使用python2.7 distutils脚本,它似乎被绊倒在2个包上:rsa
&pyasn1
:
error: [Error 3] The system cannot find the path specified:
'c:\\python27\\lib\\site-packages\\pyasn1-0.1.9-py2.7.egg\\pyasn1/*.*'
Run Code Online (Sandbox Code Playgroud)
(错误rsa
是类似的.)
起初我认为这是一个权限问题(两个egg文件都显示了一个挂锁徽章),但即使在更改权限后,错误仍然存在.
然后我注意到这两个鸡蛋不是目录,而是单个文件,这可以解释为什么cx_freeze无法找到所请求的子目录.
我已经尝试将这些指定为packages
或者includes
; 无论哪种方式,我都会看到错误.
我也尝试将它们指定为excludes
然后直接复制蛋; 这允许cx_freeze
脚本完成,但随后可执行文件找不到鸡蛋.
所以我的问题是:如何让我的cx_freeze脚本识别这些蛋?
背景:我有一个负责安全的源文件。其中有魔术键和特定算法。
是否可以从 python 蛋或轮包中删除这个单一的源文件?
我已经完成了使用 egg 命令只发送二进制文件。
python setup.py bdist_egg --exclude-source-files
Run Code Online (Sandbox Code Playgroud)
编辑项目结构:
??? setup.py
??? src
| ??? __init__.py
| ??? file1.py
| ??? file2.py
| ??? file_to_exclude.py
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我曾经python setup.py install
在一个 python 项目中运行,它只会将源移动到site-packages
,但有时它会将egg
文件移动到site-packages
?
#!/usr/bin/env python
# encoding: utf-8
from setuptools import setup,find_packages
setup(
name = "ipin_rpc_gen_vector",
version = "0.0.2",
packages = find_packages("src"),
package_dir={"":"src"},
install_requires=[
],
)
Run Code Online (Sandbox Code Playgroud)
那么这背后有什么不同呢?什么时候安装源码,什么时候只安装egg
文件?如何强制安装源而不是egg
文件?
egg ×10
python ×9
setuptools ×6
python-2.7 ×2
buildout ×1
comparison ×1
cx-freeze ×1
distutils ×1
django ×1
python-wheel ×1
setup.py ×1
svn ×1
windows ×1