为什么PIP将下划线转换为破折号

时间:2013-05-05 13:38:50

标签: python pip pyramid

我正在尝试安装Pyramid应用程序 - 让我们说test_app。在虚拟环境中,它以test-app的形式安装(pip冻结输出显示test-app==0.0)。

因此,我无法导入包。

我该如何解决这个问题?

更多信息: http://mail.python.org/pipermail/distutils-sig/2011-August/017935.html

我正在使用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
      """,
      )

更新:

总结迄今为止的调查结果:

  • pip将包名称报告为test-app是正常的。
  • egg链接指向虚拟env根目录是不正常的。
  • 但是.egg-info文件是在你的虚拟环境根目录中创建的,并指出使用该目录作为蛋根开发。

1 个答案:

答案 0 :(得分:5)

所以,经过大量的摆弄,我终于找到了解决方案 - 这很烦人。

我正在使用virtualenv并在开发模式下安装软件包。

我是从错误的位置安装软件包。事实证明,运行python setup.py develop的位置(目录)确实是进入.egg-link文件的位置(目录)。

您应该将软件包安装到虚拟环境中,从您的代码所在的位置开始。

所以,例如,假设您的代码位于'/ a / b',而您的virtualenv env位于'/ x / y / env',那么您应该安装这样的包:

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

这将正确安装包。

因此,“ - ”和“_”问题不是问题,您应该注意在develop模式下安装软件包的位置。