2011-12-20 100 views
12

我想弄清楚如何构建可通过pip安装的Python源码包。我尝试使用在http://packages.python.org/an_example_pypi_project/setuptools.html 上描述的setup.py文件和指定目录中的许多简单测试文件创建一个测试项目。用pip安装Python软件包源码包

创建名为dist/an_example_pypi_project-0.0.4.tar.gzpython setup.py sdist项目源压缩包后,我尝试安装它在virtualenv中环境称为~/TEST~/TEST/bin/pip install dist/an_example_pypi_project-0.0.4.tar.gz。虽然PIP没有抛出任何错误,它似乎没有安装的软件包:

$ ~/TEST/bin/pip install dist/an_example_pypi_project-0.0.4.tar.gz 
Unpacking ./dist/an_example_pypi_project-0.0.4.tar.gz 
    Running setup.py egg_info for package from file:///home/lebedov/an_example_pypi_project/dist/an_example_pypi_project-0.0.4.tar.gz 

Cleaning up... 
$ find ~/TEST -name "an_example*" 
$ 

请注意,我用的easy_install能够从压缩包安装:

$ ~/TEST/bin/easy_install dist/an_example_pypi_project-0.0.4.tar.gz 
Processing an_example_pypi_project-0.0.4.tar.gz 
Running an_example_pypi_project-0.0.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-tfXxeW/an_example_pypi_project-0.0.4/egg-dist-tmp-N2QY_N 
warning: build_py: byte-compiling is disabled, skipping. 

warning: install_lib: byte-compiling is disabled, skipping. 

zip_safe flag not set; analyzing archive contents... 
Adding an-example-pypi-project 0.0.4 to easy-install.pth file 

Installed /home/lebedov/TEST/lib/python2.7/site-packages/an_example_pypi_project-0.0.4-py2.7.egg 
Processing dependencies for an-example-pypi-project==0.0.4 
Finished processing dependencies for an-example-pypi-project==0.0.4 
$ find ~/TEST/ -name "an_example*"         
/home/lebedov/TEST/lib/python2.7/site-packages/an_example_pypi_project-0.0.4-py2.7.egg 

难道我忽略了配置包中的东西,以便使用pip进行安装?我使用Python 2.7.2,分发0.6.21,virtualenv 1.7和pip 1.0.2。

+1

这个问题似乎只在我调用pip时出现,而当前目录是包含项目源的目录。看起来,构建源代码发布之后创建的.egg-info子目录的存在会混淆pip。不知道这是否是一个错误 - 我会问问小开发者。 – lebedov 2011-12-20 18:35:52

+2

为了将来的参考,这里是查询:https://github.com/pypa/pip/issues/414 – lebedov 2011-12-20 18:51:22

+0

这适用于我的项目,我也有.egg-info。你有没有用'tree'来看看你的目录? – 2011-12-27 17:57:15

回答

4

你发布在github上的bug报告有很好的重现指令。 (我在票上评论过,并在这里复制了回复。)

我按照这些说明使用了列出的软件包的确切版本,但仍然无法重现此问题。

下面是从pip install --verbose我的输出有问题的命令:

Unpacking ./dist/anyjson-0.3.1.tar.gz 
    Running setup.py egg_info for package from file:///home/david/projects/anyjson-0.3.1/dist/anyjson-0.3.1.tar.gz 
    running egg_info 
    creating pip-egg-info/anyjson.egg-info 
    writing pip-egg-info/anyjson.egg-info/PKG-INFO 
    writing top-level names to pip-egg-info/anyjson.egg-info/top_level.txt 
    writing dependency_links to pip-egg-info/anyjson.egg-info/dependency_links.txt 
    writing manifest file 'pip-egg-info/anyjson.egg-info/SOURCES.txt' 
    warning: manifest_maker: standard file '-c' not found 

    reading manifest file 'pip-egg-info/anyjson.egg-info/SOURCES.txt' 
    reading manifest template 'MANIFEST.in' 
    writing manifest file 'pip-egg-info/anyjson.egg-info/SOURCES.txt' 
Installing collected packages: anyjson 
    Running setup.py install for anyjson 
    running install 
    running build 
    running build_py 
    creating build 
    creating build/lib.linux-i686-2.7 
    creating build/lib.linux-i686-2.7/anyjson 
    copying anyjson/__init__.py -> build/lib.linux-i686-2.7/anyjson 
    running install_lib 
    creating /tmp/TEST/lib/python2.7/site-packages/anyjson 
    copying build/lib.linux-i686-2.7/anyjson/__init__.py -> /tmp/TEST/lib/python2.7/site-packages/anyjson 
    byte-compiling /tmp/TEST/lib/python2.7/site-packages/anyjson/__init__.py to __init__.pyc 
    running install_egg_info 
    running egg_info 
    writing anyjson.egg-info/PKG-INFO 
    writing top-level names to anyjson.egg-info/top_level.txt 
    writing dependency_links to anyjson.egg-info/dependency_links.txt 
    warning: manifest_maker: standard file '-c' not found 

    reading manifest file 'anyjson.egg-info/SOURCES.txt' 
    reading manifest template 'MANIFEST.in' 
    writing manifest file 'anyjson.egg-info/SOURCES.txt' 
    Copying anyjson.egg-info to /tmp/TEST/lib/python2.7/site-packages/anyjson-0.3.1-py2.7.egg-info 
    running install_scripts 
    writing list of installed files to '/tmp/pip-gvBT02-record/install-record.txt' 
Successfully installed anyjson 
Cleaning up... 

也许你可以添加--verbose到您的点子安装命令后输出进行比较?

+1

我有一个类似的问题。我在我的.bashrc文件中注释掉了PYTHONDONTWRITEBYTECODE,注销,登录,启动了我的虚拟环境,pip安装正常运行。 – highpost 2014-01-07 22:42:49