使用pip安装Python包源tarball
我正在尝试弄明白如何构建一个可以通过pip安装的Python源包。我试着创建了一个测试项目,并在指定的目录下放了一些简单的测试文件,里面有一个叫做setup.py的文件,具体内容可以参考这个链接。
我用命令python setup.py sdist
创建了一个名为dist/an_example_pypi_project-0.0.4.tar.gz
的源压缩包,然后我尝试在一个叫做~/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,distribute 0.6.21,virtualenv 1.7,以及pip 1.0.2。
1 个回答
6
你在GitHub上发布的错误报告提供了很好的重现步骤。(我在票据上评论了,并把回复复制到这里。)
我严格按照你提供的步骤,使用你列出的那些包的确切版本,还是无法重现这个问题。
这是我在运行 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...
也许你可以在你的 pip 安装命令中加上 --verbose
,然后把输出结果发出来,咱们可以对比一下?