问题描述
在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的文件中添加如下几行代码:
import sys
sys.path.append(project的绝对路径) # 添加需要调用project的绝对路径或调用的py文件绝对路径
from aaa.test_a import *
第二种
将项目打包,在项目的根目录下新建setup.py文件,然后在文件中写入如下内容
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()中的内容可替换为自己的信息,也可不替换,然后保存。
然后
$ cd project
$ python setup.py develop
这样项目的路径也可以加入到系统路径中,至此可以正常调用啦。(使用develop是开发模式加入,install是永久加入)
解决原理
当程序运行需要导入文件时,是从程序中的导入路径进行寻找。找不到时就会去系统路径中寻找,这时,将需要该项目的路径添加到系统路径或调用的py文件路径中即可,用的是import sys。
sys.path是python一个搜索模块的路径集,属于list类型; 在退出python环境后,添加的路径就会自动消失~