2011-12-20 37 views
12

Tôi đang cố gắng tìm ra cách xây dựng một gói nguồn Python có thể cài đặt được qua pip. Tôi đã thử tạo một dự án thử nghiệm với tệp setup.py được mô tả trên http://packages.python.org/an_example_pypi_project/setuptools.html và một số tệp thử nghiệm đơn giản trong các thư mục được chỉ định.cài đặt gói tarball nguồn Python với pip

Sau khi tạo một tarball nguồn cho các dự án có tên dist/an_example_pypi_project-0.0.4.tar.gz với python setup.py sdist, tôi đã cố gắng cài đặt nó trong một môi trường virtualenv gọi ~/TEST với ~/TEST/bin/pip install dist/an_example_pypi_project-0.0.4.tar.gz. Mặc dù pip không ném bất kỳ lỗi, nó dường như không phải cài đặt gói:

$ ~/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*" 
$ 

Lưu ý rằng tôi đã có thể cài đặt từ tarball sử dụng 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 

Tôi bỏ qua để cấu hình một cái gì đó trong gói để làm cho nó có thể cài đặt với pip? Tôi đang sử dụng Python 2.7.2, phân phối 0.6.21, virtualenv 1.7 và pip 1.0.2.

+1

Sự cố dường như chỉ phát sinh khi tôi gọi pip trong khi thư mục hiện tại chứa thư mục nguồn của dự án. Dường như sự hiện diện của thư mục con .egg-info được tạo sau khi xây dựng pip gây nhầm lẫn phân phối nguồn. Không chắc chắn nếu đây là một lỗi - Tôi sẽ hỏi các nhà phát triển pip. – lebedov

+2

Để tham khảo trong tương lai, đây là yêu cầu: https://github.com/pypa/pip/issues/414 – lebedov

+0

Điều này phù hợp với dự án của tôi và tôi cũng có thông tin .egg. Bạn đã xem các thư mục của mình bằng cách sử dụng 'cây' chưa? –

Trả lời

4

Báo cáo lỗi bạn đăng trên github có hướng dẫn tuyệt vời để tái tạo. (Tôi đã nhận xét trên vé và sao chép câu trả lời ở đây.)

Tôi đã làm theo các hướng dẫn đó cho chữ cái bằng các phiên bản chính xác của các gói bạn đã liệt kê và vẫn không thể tái tạo vấn đề này.

Dưới đây là kết quả của tôi từ pip install --verbose cho lệnh trong câu hỏi:

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... 

Có lẽ bạn có thể thêm --verbose để pip của bạn cài đặt lệnh và gửi đầu ra để so sánh?

+1

Tôi gặp sự cố tương tự. Tôi đã nhận xét PYTHONDONTWRITEBYTECODE trong tệp .bashrc của tôi, đã đăng xuất, đăng nhập, bắt đầu môi trường ảo và cài đặt pip hoạt động tốt. – highpost

Các vấn đề liên quan