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

Python 为什么PIP将下划线转换为破折号,python,pip,pyramid,Python,Pip,Pyramid,我正在尝试安装一个金字塔应用程序——比如说test\u应用程序。在虚拟环境中,它将作为测试应用程序安装(pip冻结输出显示它测试应用程序==0.0) 因此,我无法导入该包 我应该如何解决这个问题 更多信息: 我正在使用pip版本1.3.1 setup.py: import os from setuptools import setup, find_packages here = os.path.abspath(os.path.dirname(__file__)) README = open

我正在尝试安装一个金字塔应用程序——比如说
test\u应用程序
。在虚拟环境中,它将作为
测试应用程序安装(pip冻结输出显示它
测试应用程序==0.0

因此,我无法导入该包

我应该如何解决这个问题

更多信息:

我正在使用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 info文件是在虚拟环境根目录中创建的,这一事实也表明需要使用该目录作为egg根目录进行开发

所以,经过一番努力,我终于找到了解决方案——简单得令人恼火

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

我从错误的位置安装了软件包。事实证明,运行
python setup.py develope
的位置(目录)实际上就是进入
.egg链接的位置(目录)

您应该从代码所在的位置将包安装到虚拟环境中

例如,假设您的代码位于“/a/b”中,而您的virtualenv位于“/x/y/env”中,那么您应该按照如下方式安装该软件包:

$ cd /a/b
$ /x/y/env/bin/python setup.py develop
这将正确安装软件包


因此,'-'和'.'问题不是问题,您应该注意在
develope
模式下安装包的位置。

到目前为止的摘要:
develope
命令在虚拟环境根目录中创建一个
.egg info
目录,而
.egg链接
文件指向同一根目录。这就是导入错误的原因。事实上,
pip
将包名报告为
testapp
是正常的。FWIW,我开始使用
pip install-e.
而不是
python setup.py develop
。它们在功能上是等价的,但pip的版本有更少的bug。