问题描述

在pycharm中调试代码是没问题的,换到vscode中路径就出问题; 或者不知道从一个py文件中导入另一个py文件中的函数该怎么办呢?

解决方法两种

第一种


下面看一下文件存放目录

project
|——aaa
   |——test_a.py
|——bbb
​   |——test_b.py

假如你想从test_b.py中调用test_a.py里的函数,或者从 ==任何位置== 调用test_a.py,只需要在test_b.py中或你想run的文件中添加如下几行代码:

1
2
3
import sys
sys.path.append(project的绝对路径) # 添加需要调用project的绝对路径或调用的py文件绝对路径
from aaa.test_a import *

第二种


将项目打包,在项目的根目录下新建setup.py文件,然后在文件中写入如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import os.path

from setuptools import setup, find_packages
import sys
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

setup(
name="utils",
version="1.0",
author="jerry",
author_email="jerryzz668@163.com",
description="Stay true -->公众号:Codejerry",

# 项目主页
url="https://gitee.com/jerry/zy_utils",

# 你要安装的包,通过 setuptools.find_packages 找到当前目录下有哪些包
packages=find_packages()
)

setup()中的内容可替换为自己的信息,也可不替换,然后保存。
然后

1
2
$ cd project
$ python setup.py develop

这样项目的路径也可以加入到系统路径中,至此可以正常调用啦。(使用develop是开发模式加入,install是永久加入)

解决原理

当程序运行需要导入文件时,是从程序中的导入路径进行寻找。找不到时就会去系统路径中寻找,这时,将需要该项目的路径添加到系统路径或调用的py文件路径中即可,用的是import sys。

sys.path是python一个搜索模块的路径集,属于list类型; 在退出python环境后,添加的路径就会自动消失~