我正在尝试安装一个 Pyramid 应用程序——比如说test_app
。在虚拟环境中,它被安装为test-app
(pip freeze 输出显示它test-app==0.0
)。
因此,我无法导入包。
我应该如何解决这个问题?
更多信息: http: //mail.python.org/pipermail/distutils-sig/2011-August/017935.html
我正在使用 pip 版本 1.3.1
设置.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 根目录进行开发。
2021 年更新
我现在已经开始在我所有的新 Python 项目中使用Poetry而不是 pip。它适用于普通项目和 Jupyter 笔记本。凭借其更好的包管理开发人员体验,对于上述示例,我所要做的就是
poetry run xyz
我在规范文件中定义的脚本在哪里xyz
(类似于package.json
for npm
)。我将能够像所有其他包一样导入我自己的包。