Gần đây tôi đã bắt đầu đóng gói dự án đầu tiên của mình với SetupTools và hầu như đã thành công.Sự khác nhau giữa các thiết lập và độ phân giải phụ thuộc của pip
Thật không may, tôi đã gặp phải một tình huống khó hiểu - dự án của tôi phụ thuộc vào một mô-đun đơn lẻ không có sẵn trên PyPI. Tôi đã có thể cấu hình setup.py để phụ thuộc vào mô-đun đó một cách dễ dàng, bằng cách sử dụng tùy chọn dependency_links và mọi thứ hoạt động ... miễn là tôi đang sử dụng setup.py để cài đặt nó. Nếu tôi cố gắng sử dụng pip để cài đặt trứng dự án, nó thất bại trong khi cố gắng cài đặt mô-đun, giả sử rằng nó phải là một kho lưu trữ trứng được tạo sẵn. Trong khi đó, setup.py phát hiện rằng đó là một tệp nguồn đơn giản và tạo ra một quả trứng từ đó.
Mục đích của tôi là có dự án của tôi có sẵn trên PyPI, vì vậy điều quan trọng là nó có thể cài đặt chỉ bằng pip; vì vậy câu hỏi của tôi là ... tôi có làm gì sai không? Sự hiểu biết của tôi là thiết lập về cơ bản là một phương tiện để kết thúc, mà kết thúc là pip và PyPI, do đó, nó có vẻ rất lạ với tôi rằng hai công cụ nên hành xử rất khác nhau.
Phần liên quan của setup.py và đầu ra từ mỗi công cụ sau:
setup(
name='particle-fish',
version='0.1.0',
description='Python Boilerplate contains all the boilerplate you need to create a Python package.',
long_description=readme + '\n\n' + history,
author='Lachlan Pease',
author_email='[email protected]',
url='https://github.com/predakanga/particle-fish',
packages=[
'particle.plugins'
],
include_package_data=True,
install_requires=['particle', 'irccrypt', 'pycrypto'],
dependency_links=['http://www.bjrn.se/code/irccrypt/irccrypt.py#egg=irccrypt-1.0'],
license="BSD",
zip_safe=False,
keywords='particle-fish',
classifiers=[
'Development Status :: 2 - Pre-Alpha',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Natural Language :: English',
"Programming Language :: Python :: 2",
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
],
test_suite='tests',
tests_require=['pytest', 'mock', 'coverage', 'pytest-cov'],
cmdclass = {'test': PyTest},
)
Output từ setup.py cài đặt:
Installed /Users/lachlan/.virtualenvs/particle-fish/lib/python2.7/site-packages/particle_fish-0.1.0-py2.7.egg
Processing dependencies for particle-fish==0.1.0
Searching for irccrypt
Best match: irccrypt 1.0
Downloading http://www.bjrn.se/code/irccrypt/irccrypt.py#egg=irccrypt-1.0
Processing irccrypt.py
Writing /var/tmp/easy_install-svPfHF/setup.cfg
Running setup.py -q bdist_egg --dist-dir /var/tmp/easy_install-svPfHF/egg-dist-tmp-Xq3OCt
zip_safe flag not set; analyzing archive contents...
Adding irccrypt 1.0 to easy-install.pth file
Output từ pip cài đặt:
Downloading/unpacking irccrypt (from particle-fish==0.1.0)
Downloading irccrypt.py
Cannot unpack file /private/var/tmp/pip-mCc6La-unpack/irccrypt.py (downloaded from /Users/lachlan/.virtualenvs/particle-staging/build/irccrypt, content-type: text/plain); cannot detect archive format
Cleaning up...
Cannot determine archive format of /Users/lachlan/.virtualenvs/particle-staging/build/irccrypt
Bạn có phiên bản pip và công cụ cài đặt nào? – abarnert
Pip phiên bản 1.4.1 và setuptools phiên bản 0.9.8, tương ứng –
Và nâng cấp lên setuptools 1.1 sau đó chạy lại tạo kết quả sdist trong cùng một kết quả –