问题描述

在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环境后,添加的路径就会自动消失~