2013-05-05 2 views
6

Я пытаюсь установить приложение Pyramid - допустим, test_app. внутри виртуальной среды, и он устанавливается как test-app (вывод о замораживании контура показывает его test-app==0.0).Почему PIP конвертирует символы подчеркивания в тире

Из-за этого я не могу импортировать пакет.

Как исправить эту проблему?

Подробнее: http://mail.python.org/pipermail/distutils-sig/2011-August/017935.html

Я использую пип версии 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:

обобщить результаты до сих пор:

  • Это нормально, что pip сообщает имя пакета в качестве тестового приложения.
  • Неправильно, что ссылка на яйцо указывает на ваш виртуальный корень env.
  • Но тот факт, что файл .egg-info создается внутри вашего виртуального корня env, а также указывает на то, что он развивается с использованием этого каталога в качестве корня яйца.
+0

Резюме: команда 'develop' создает каталог' .egg-info' в корне виртуального env, а файл '.egg-link' указывает на тот же корневой каталог. Это является причиной ошибки импорта. Тот факт, что 'pip' сообщает имя пакета как' test-app', является нормальным. –

+0

@MartijnPieters Я решил проблему. См. Мой ответ. – treecoder

ответ

4

Итак, наконец-то, после многократного вождения, я нашел решение, которое досадно просто.

Я использую virtualenv и устанавливаю пакет в режиме разработки.

Я устанавливал пакет из неправильного местоположения. Оказывается, что местоположение (каталог), из которого вы запускаете python setup.py develop, действительно является тем, что входит в файл .egg-link.

Вы должны установить пакет в виртуальную среду FROM, где находится ваш код.

Так, к примеру, предположим, что ваш код находится в «/ а/Ь» и ваш virtualenv окр в «/ х/у/окр», то вы должны установить пакет, как это:

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

Это правильно установит упаковку.

Следовательно, проблема «-» и «_» не является проблемой, и вы должны быть осторожны относительно местоположения, из которого вы устанавливаете пакет в режиме develop.

+0

FWIW, я решил использовать 'pip install -e .' вместо' python setup.py develop'. Они функционально эквивалентны, но версия pip имеет меньше ошибок. –

Смежные вопросы