作为python游戏的新手,我似乎错过了一些关于如何开发程序的知识,但也将其保留在您的实时环境中。
像gpodder这样的程序可以直接从源结账处运行,这非常方便,但是其他人希望“安装”运行。
很多程序都是使用setup.py发布的,其中包含以root身份运行“python ./setup.py install”的说明,它会将内容放在文件系统中的某个位置。甚至还有像“develop”这样的安装命令,它们似乎能够实现我想要的目标。所以我试过了:
export PYTHONPATH=/home/alex/python
python ./setup.py develop --install-dir=/home/alex/python
在本地下载了一堆东西,似乎神奇地确保我正在攻击的应用程序仍在运行src树。所以我想我的迂回问题是这是开发python代码的正确方法吗? easy_install和pip等因素如何影响到这个?
编辑添加
所以我尝试了以下内容:
python /usr/share/pyshared/virtualenv.py /home/alex/src/goobook
cd /home/alex/src/goobook/googbook.git
/home/alex/src/goobook/bin/python ./setup.py develop
最后将有问题的程序链接到我的〜/ bin
cd /home/alex/src/goobook
linkbin.pl bin/goobook
然而,调用引发了额外的喋喋不休,似乎暗示它是错误的:
17:17 alex@socrates/i686 [goobook] >goobook --help
/home/alex/bin/goobook:5: UserWarning: Module pkg_resources was already imported from /home/alex/src/goobook/lib/python2.5/site-packages/setuptools-0.6c8-py2.5.egg/pkg_resources.py, but /home/alex/src/goobook/lib/python2.5/site-packages/distribute-0.6.10-py2.5.egg is being added to sys.path
from pkg_resources import load_entry_point
/home/alex/bin/goobook:5: UserWarning: Module site was already imported from /home/alex/src/goobook/lib/python2.5/site.pyc, but /home/alex/src/goobook/lib/python2.5/site-packages/distribute-0.6.10-py2.5.egg is being added to sys.path
from pkg_resources import load_entry_point
答案 0 :(得分:11)
安装:
http://pypi.python.org/pypi/virtualenv
为您的库设置本地化虚拟环境,并且:
http://pypi.python.org/pypi/setuptools
即。 “easy_install”安装新东西。
答案 1 :(得分:5)
Virtualenv允许您在完全独立且孤立的Python环境中工作。它可以让您轻松创建安装了不同Python软件包的多个环境或同一软件包的不同版本。 Virtualenv还可让您轻松切换不同的环境。
截至2012年,Python中用于包管理的事实上首选工具是pip而不是setuptools。 Pip能够处理依赖关系并在全局或虚拟环境中安装/卸载。 Pip甚至与virtualenv开箱即用。
另外值得一提的是,release 3.3中虚拟环境正在成为Python本身的一部分,并实现了PEP 405。
答案 2 :(得分:1)
Python Packaging User Guide,"旨在成为如何使用当前工具打包,发布和安装Python发行版的权威资源",建议使用pip安装在"开发模式& #34;:
pip install -e <path>
因此,在您的包的根目录中,您可以简单地
pip install -e .
答案 3 :(得分:0)
开发具有依赖关系的Python应用程序的最佳方法是:
1)下载所需版本的python解释器。
2)安装并使用buildout(http://www.buildout.org/)。
Buildout就像Maven for Java(将自动获取所有需要的包)。
这样,您的Python解释器不会被第三方软件包污染(如果您将在其他计算机上运行开发的应用程序,这很重要)。此外,您可以将buildout与virtualenv包集成(这允许您为每个项目创建虚拟python解释器)。