我已经使用以下命令安装了我的库:
pip install .
这是目录结构:
└───module1
├───__init__.py
└───mod_1.py
└───module2
├───__init__.py
└───mod_2.py
__init__.py
setup.py
setup.py 里面
from setuptools import setup,find_packages
setup(
name = "my_lib",
version="1.0.0",
packages=find_packages(),
python_requires='>=3.7',
include_package_data=True,
zip_safe=False)
安装于:
.\Python\Python312\Lib\site-packages
└───module1
├───____pycache__
├───__init__.py
└───mod_1.py
└───module2
├───____pycache__
├───__init__.py
└───mod_2.py
└───my_lib-1.0.0.dist-info
├───direct_url.json
├───INSTALLER
├───METADATA
├───RECORD
├───REQUESTED
├───top_level.txt
└───WHEEL
预期行为/导入:
from my_lib import mod_1, mod_2
当前错误是:
ModuleNotFoundError: No module named 'my_lib'
解决方法:
import mod_1, mod_2
需要帮助:
我需要在 setup.py 中更改哪些内容才能导入 my_lib,如下所示?
from my_lib import mod_1, mod_2
将
module1
和 module2
移动到 my_lib
目录中,并将其添加到 my_lib/__init__.py
(另请注意,我删除了根 __init__.py
,因为不需要它。)
from .module1 import mod_1
from .module2 import mod_2
.
├── build
│ ├── bdist.linux-aarch64
│ └── lib
│ └── my_lib
│ ├── __init__.py
│ ├── module1
│ │ ├── __init__.py
│ │ └── mod_1.py
│ └── module2
│ ├── __init__.py
│ └── mod_2.py
├── my_lib
│ ├── __init__.py
│ ├── __pycache__
│ │ └── __init__.cpython-312.pyc
│ ├── module1
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ │ ├── __init__.cpython-312.pyc
│ │ │ └── mod_1.cpython-312.pyc
│ │ └── mod_1.py
│ └── module2
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-312.pyc
│ │ └── mod_2.cpython-312.pyc
│ └── mod_2.py
├── my_lib.egg-info
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ ├── not-zip-safe
│ └── top_level.txt
└── setup.py
13 directories, 21 files
现在导入工作如您所愿
Python 3.12.0 (main, Nov 29 2023, 02:50:35) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from my_lib import mod_1, mod_2
>>>