我正在尝试创建一个 python 包,所以在创建包含我所有文件的文件夹后,包括一个__init__.py文件,我将文件夹移动到 /usr/local/lib/python3.8/site-packages/。
当我尝试使用import ClockTower(文件夹名称)它返回
Exception has occurred: ModuleNotFoundError
No module named 'ClockTower'
我究竟做错了什么?
我正在尝试创建一个 python 包,所以在创建包含我所有文件的文件夹后,包括一个__init__.py文件,我将文件夹移动到 /usr/local/lib/python3.8/site-packages/。
当我尝试使用import ClockTower(文件夹名称)它返回
Exception has occurred: ModuleNotFoundError
No module named 'ClockTower'
我究竟做错了什么?
您无法import ClockTower成功的原因是您尚未实际安装它。
distutils如果该软件包仅在您自己的机器上供个人使用,我建议您使用distutils创建一个简单的setup.py脚本来启用您的软件包的安装 -distutils通常作为内置软件包分发,但是基于 Debian 的系统默认情况下可能没有它(请参阅在这里)。
以下是一些关于创建脚本的分步文档setup.py,使您能够在整个系统中安装和使用您的包。
如果您只想要一个快速且最小的解决方案,首先创建一个新目录,然后在该文件夹中创建一个名为setup.py的文件,将包含包文件/代码的目录也放入其中。
您的封闭文件夹应如下所示 -ClockTower为清楚起见,此处省略了其他文件/目录。
/home/usr/Desktop/EnclosingDir
├───setup.py
│
└───ClockTower
└───__init__.py
setup.py应该看起来像这样来定义ClockTower包的基本安装。
from distutils.core import setup
setup(
name='ClockTower',
version='1.0.0',
packages=['ClockTower'],
)
要安装您的包以供指定的解释器(此处python3.8)使用,只需导航到包含setup.py并运行的封闭文件夹。
python3.8 -m pip install .
您应该会看到一些控制台输出,如果安装成功,您应该ClockTower 1.0.0会在运行时看到列出的内容,python3.8 -m pip list并且能够成功import ClockTower使用此解释器。
重要提示:这种方法不考虑任何外部依赖项(例如,非内置包/模块)ClockTower,它假定解释器可以使用这些依赖项 - 例如已经使用requirements.txt安装过程之类的东西安装。
setuptoolssetuptools是一个用于分发 Python 包的功能更全面的库。这种丰富的功能是以增加学习和实施的复杂性/时间为代价的。
如果您要与其他人共享此软件包,我建议您查看setuptools用户指南并遵循以创建一个强大且可移植的软件包分发。