解决pycharm中导入自己写的.py函数出错问题

  • Post category:Python

解决PyCharm中导入自己写的.py函数出错问题是一个比较常见的需求,本文将提供完整的攻略,帮助读者轻松解决这个问题。

1. 确认函数所在的目录是否已经加入到PYTHONPATH中

首先要确认自己写的.py函数的所在路径是否已经加入到PYTHONPATH中,这是导入模块时Python解释器搜索路径的基础。Python解释器会按照PYTHONPATH的顺序寻找模块,因此要确保自己的函数所在目录已经被包含在其中。如何确认是否包含呢?可以在PyCharm的Terminal中用以下命令查询:

import sys
print(sys.path)

输出的结果就是Python解释器搜索路径,如果自己的函数所在目录不在其中,就需要手动添加。方法如下:

  • 打开PyCharm,进入项目工程,找到项目主目录。件主目录通常在代码图上端,一般是项目名称,右键单击即可选择“Show in Explorer”进入根目录。
  • 在根目录中创建一个名为.env.env.local的文件。
  • 在该文件中加入以下代码:
PYTHONPATH=./

PYTHONPATH表示Python解释器的搜索路径,我们将自己的函数所在目录作为当前路径加入PYTHONPATH中。

  • 重启PyCharm并重新加载虚拟环境。

2. 使用相对路径导入自己的函数

如果上述方法不起作用,还需要确认自己的代码中是否使用了正确的导入模块方法。通常情况下,我们使用绝对路径导入模块,比如:

from project.module import my_func

但在PyCharm中,如果自己写的.py文件不在一个Python Package中,绝对路径导入是不起作用的。这时候就需要使用相对路径导入:

from .module import my_func

其中的”.”表示当前目录,这样就可以顺利导入自己写的.py函数了。

下面是两个示例说明:

示例1:相对路径导入自己写的.py函数

假设我们有一个test.py文件,其所在路径为/Users/mark/test/test.py,在这个文件中,我们自己定义了一个函数my_func(). 现在我们在另一个路径/Users/mark/run下的main.py文件中需要导入test.py中的my_func()函数。

  1. 先确认自己的函数所在路径是否已经加入到PYTHONPATH中。
  2. 使用相对路径导入自己的函数,将以下代码添加到main.py文件中:
from ..test.test import my_func

my_func()

这里的”..”表示回到上一级目录,找到test.py文件,然后导入其中的my_func()函数。

示例2:使用sys.path添加函数所在路径

假设我们有一个test.py文件,其所在路径为/Users/mark/test/test.py,在这个文件中,我们自己定义了一个函数my_func(). 现在我们在另一个路径/Users/mark/run下的main.py文件中需要导入test.py中的my_func()函数。

  1. 确认自己的函数所在路径是否已经加入到PYTHONPATH中,如果还没有,可以手动加入。
import sys
sys.path.append('/Users/mark/test')
  1. 使用绝对路径导入自己的函数,将以下代码添加到main.py文件中:
from test import my_func

my_func()

这里的”from test import my_func”表示从test.py中导入my_func()函数。注意,这里并没有使用相对路径,而是直接使用了函数所在的绝对路径。

希望本文的攻略对大家有所帮助。