如何导入本地安装的库?

问题描述 投票:0回答:1

我已经使用以下命令安装了我的库:

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
python python-3.x pip python-import setuptools
1个回答
1
投票

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
>>> 
© www.soinside.com 2019 - 2024. All rights reserved.