2013-05-05 39 views
6

Tôi đang cố gắng cài đặt ứng dụng Kim tự tháp - giả sử test_app. bên trong một môi trường ảo và nó đang được cài đặt như test-app (đầu ra đóng băng pip hiển thị nó test-app==0.0).Tại sao PIP chuyển đổi dấu gạch dưới thành dấu gạch ngang

Vì lý do này, tôi không thể nhập gói.

Tôi nên khắc phục sự cố này như thế nào? Thông tin

thêm: http://mail.python.org/pipermail/distutils-sig/2011-August/017935.html

Tôi đang sử dụng phiên bản pip 1.3.1

setup.py:

import os 

from setuptools import setup, find_packages 

here = os.path.abspath(os.path.dirname(__file__)) 
README = open(os.path.join(here, 'README.txt')).read() 
CHANGES = open(os.path.join(here, 'CHANGES.txt')).read() 

requires = [ 
    'pyramid', 
    'pyramid_debugtoolbar', 
    'waitress', 
    ] 

setup(name='test_app', 
     version='0.0', 
     description='test_app', 
     long_description=README + '\n\n' + CHANGES, 
     classifiers=[ 
     "Programming Language :: Python", 
     "Framework :: Pyramid", 
     "Topic :: Internet :: WWW/HTTP", 
     "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", 
     ], 
     author='', 
     author_email='', 
     url='', 
     keywords='web pyramid pylons', 
     packages=find_packages(), 
     include_package_data=True, 
     zip_safe=False, 
     install_requires=requires, 
     tests_require=requires, 
     test_suite="test_app", 
     entry_points="""\ 
     [paste.app_factory] 
     main = test_app:main 
     """, 
    ) 

UPDATE:

để tóm tắt những phát hiện cho đến nay:

  • Bình thường pip báo cáo tên gói là ứng dụng thử nghiệm.
  • Nó không phải là bình thường mà liên kết trứng được trỏ đến gốc env ảo của bạn.
  • Nhưng thực tế là tệp .egg-info được tạo bên trong thư mục gốc ảo của bạn cũng là điểm phát triển bằng cách sử dụng thư mục đó làm gốc trứng.
+0

Tóm tắt từ trước đến nay: Lệnh 'develop' tạo thư mục' .egg-info' trong thư mục ảo env root và tệp '.gg-link' trỏ đến cùng thư mục gốc đó. Đây là nguyên nhân của lỗi nhập. Thực tế là 'pip' báo cáo tên gói là' test-app' là bình thường. –

+0

@MartijnPieters Tôi đã giải quyết được vấn đề. Xem câu trả lời của tôi. – treecoder

Trả lời

4

Vì vậy, cuối cùng sau rất nhiều điều không quan tâm, tôi đã tìm thấy giải pháp - điều này rất đơn giản.

Tôi đang sử dụng virtualenv và đang cài đặt gói trong chế độ phát triển.

Tôi đã cài đặt gói từ sai vị trí. Hóa ra vị trí (thư mục) mà từ đó bạn chạy python setup.py develop thực sự là tệp đi vào tệp .egg-link.

Bạn nên cài đặt gói vào môi trường ảo TỪ vị trí nơi mã của bạn.

Vì vậy, ví dụ, giả sử mã của bạn nằm trong '/ a/b' và env virtualenv bạn đang ở trong '/ x/y/env', thì bạn nên cài đặt gói như thế này:

$ cd /a/b 
$ /x/y/env/bin/python setup.py develop 

Thao tác này sẽ cài đặt gói đúng cách.

Do đó, sự cố '-' và '_' không phải là vấn đề và bạn nên cẩn thận về vị trí nơi bạn đang cài đặt gói ở chế độ develop.

+0

FWIW, tôi đã sử dụng 'pip install -e .' thay vì' python setup.py develop'. Chúng có chức năng tương đương, nhưng phiên bản của pip có ít lỗi hơn. –

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