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。