我正试图在本地使用pip install .
创建一个要安装的python包。包名列在pip freeze
中,但是import <package>
会导致错误No module named <package>
。此外,site packages文件夹仅包含dist info文件夹。find_packages()
能够找到包。我错过了什么?
import io
import os
import sys
from shutil import rmtree
from setuptools import find_packages, setup, Command
# Package meta-data.
NAME = '<package>'
DESCRIPTION = 'description'
URL = ''
EMAIL = 'email'
AUTHOR = 'name'
# What packages are required for this module to be executed?
REQUIRED = [
# 'requests', 'maya', 'records',
]
# The rest you shouldn't have to touch too much :)
# ------------------------------------------------
# Except, perhaps the License and Trove Classifiers!
# If you do change the License, remember to change the Trove Classifier for that!
here = os.path.abspath(os.path.dirname(__file__))
# Where the magic happens:
setup(
name=NAME,
#version=about['__version__'],
description=DESCRIPTION,
# long_description=long_description,
author=AUTHOR,
author_email=EMAIL,
url=URL,
packages=find_packages(),
# If your package is a single module, use this instead of 'packages':
# py_modules=['mypackage'],
# entry_points={
# 'console_scripts': ['mycli=mymodule:cli'],
# },
install_requires=REQUIRED,
include_package_data=True,
license='MIT',
classifiers=[
# Trove classifiers
# Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers
'License :: OSI Approved :: MIT License',
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy'
],
)
如果您使用的是Windows 10+,一种确保所有正确安装的方法是单击左下角的“开始”并搜索cmd.exe,然后右键单击“命令提示符”(确保选择“以管理员身份运行”)。键入“cd
path to your Python 3.X installation
”。您可以在文件资源管理器中找到此路径(转到安装Python的文件夹),然后在顶部找到。复制这个,放在我上面写的地方。完成后,单击enter,键入“python-m pip installpackage
”(package
表示要安装的包)。您的Python程序现在应该可以正常工作了。由于这个问题已经非常流行,下面是在安装后丢失文件时要执行的诊断步骤。假设有一个具有以下结构的示例项目:
现在我运行
pip install .
,检查包是否已安装:但在属于已安装包的文件列表中,既看不到
spam
,也看不到spam/eggs.py
,也看不到bacon.py
,也看不到spam/fizz/buzz.py
:那现在该怎么办?
通过检查车轮制造日志进行诊断
除非被告知不要这样做,
pip
将始终尝试构建一个wheel文件并从中安装您的包。如果以详细模式重新安装,我们可以检查日志中的车轮生成过程。第一步是卸载包:然后再安装一次,但现在需要一个附加参数:
现在如果我检查日志:
我注意到
spam
目录或bacon.py
目录中的任何文件都没有提到。这意味着它们不包含在wheel文件中,因此不由pip
安装。最常见的错误源是:缺少包:检查
packages
参数验证是否已将
packages
参数传递给安装函数。检查您是否提到了应该安装的所有软件包。如果只提到父包,则不会自动收集子包!例如,在安装脚本中将安装
spam
,但不会安装spam.fizz
,因为它本身是一个包,必须显式提及。修复:如果您有很多包,请使用
setuptools.find_packages
来自动执行此过程:如果缺少模块:
缺少模块:检查
py_modules
参数在上面的例子中,我将在安装后丢失
bacon.py
,因为它不属于任何包。我必须在单独的参数py_modules
中提供它的模块名:缺少数据文件:检查
package_data
参数我已经准备好了所有的源代码文件,但是
data.txt
文件仍然没有安装。位于包目录下的数据文件应该通过package_data
参数添加。修复上述设置脚本:不要试图使用
data_files
参数。将数据文件放在包下,然后配置package_data
。修复安装脚本后,请在安装后验证包文件是否已就位
如果现在重新安装程序包,我会注意到所有文件都已添加到控制盘:
它们也将在属于
mypkg
的文件列表中可见:相关问题 更多 >
编程相关推荐