python引入其他文件夹里的py文件的方法

本文介绍了在Python开发中如何在不同目录间导入文件,包括使用`import`和`from...import...`,以及如何通过添加`__init__.py`和调整`sys.path`来解决导入错误。还提及了使用别名(as)简化长库名的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写python框架的时候,经常会用到引入其他文件夹里的python文件,要是都在同目录下的还好,直接import就好了,可是有的不在同一个目录,很多初学者就发现直接import报错了
1.如果是同目录下的引入

如下图,test_a.py和test_b.py文件都在同一个目录
在这里插入图片描述

 

要在test_b里引入test_a的话

,直接在test_b里import
在这里插入图片描述

在这里插入图片描述
反之亦

2.在不同文件夹里引入

在这里插入图片描述

如果工程目录是这样的,想要在test_d里引入test_c.py文件
在这里插入图片描述
test_c.py里有个方法c,

如图
在这里插入图片描述

方法1:直接import
#引入test_c.py文件
import testFile.test_c

print('这是test_d')
testFile.test_c.c()

 

方法2:from…import…

#引入test_c.py文件
from testFile.test_c import c
print('这是test_d')
c()

 

有一种可能在引入的时候会报错,这时候有一个很简单的方法,就是在文件夹里多建一个__init__.py文件

2.1 在文件夹里加个__init__.py文件

在testFile文件夹里加上__init__.py文件,注意是两个_
这时候再运行test_d.py文件,没报错了

2.2 用sys库里的sys.path.append

当路径是这样的在这里插入图片描述
test_1.py文件里有test1的方法
要在test_2.py文件里引入test_1.py

import sys
sys.path.append('..')
from dir_1.test_1 import test1

test1()

 

综上所述,其实引入其他文件的方法有两种,一个是直接import,一个是from…import…
其实引入python库的方法也是这样的
有时候库名很长,可以用as 别名的方法来
比如引入selenium库里的键盘库,取个ac的别名,下面就直接用ac来代替ActionChains了

    from selenium.webdriver.common.action_chains import ActionChains as ac
 

 

### 实现跨文件夹Python模块导入 为了实现在Visual Studio Code中让两个位于不同文件夹中的Python文件能够相互调用函数,可以采用多种方法来设置项目结构并配置环境变量。 #### 方法一:调整`PYTHONPATH` 通过修改系统的`PYTHONPATH`环境变量或将路径添加到当前会话的`sys.path`列表,可以让解释器知道去哪寻找额外的包或模块。这可以通过在启动脚本或者直接在代码内部执行如下操作完成: ```python import sys sys.path.append('/path/to/your/project/folder') ``` 这种方法简单易行,适用于临时测试目的[^1]。 #### 方法二:创建虚拟环境与安装本地依赖 更推荐的方式是在项目的根目录下建立一个虚拟环境,并将其他子目录作为独立的软件包处理。之后利用工具如`setuptools`打包这些子目录下的内容,在开发环境中安装它们作为可选依赖项。这样做的好处是可以更好地管理版本控制以及避免污染全局命名空间。 对于这种方式而言,假设有一个名为`my_project`的大项目包含了多个功能模块(即各个子文件夹),那么可以在每个子文件夹内放置一个`setup.py`用于描述该部分的信息;接着运行命令将其安装至本地站点库(`pip install -e .`)即可。 #### 方法三:使用相对导入语句 如果两个想要交互作用的对象处于同一个顶层包之下,则可以直接运用相对导入语法来进行访问。例如在一个叫做`parent_folder`面有两个分别叫作`child_a`和`child_b`的小部件,此时就可以按照下面的形式书写: ```python from ..child_a import some_function # 如果是从 child_b 中引用的话 ``` 需要注意的是这种做法仅限于当源码被当作真正的包对待时才有效——也就是说得确保整个工程已经转换成了标准形式的Python包。 #### 示例代码展示 假设有这样一个简单的例子说明如何从另一个文件夹内的`.py`文件引入函数: ```python # parent_directory/ # ├── module_one/ # │ └── script_one.py # └── module_two/ # └── script_two.py # In script_one.py we have defined a function called 'hello_world' def hello_world(): print("Hello world!") # Now let's try importing this method inside script_two.py located elsewhere. # First approach by modifying system path at runtime: import os import sys current_dir = os.getcwd() parent_dir = os.path.dirname(current_dir) if parent_dir not in sys.path: sys.path.insert(0, parent_dir) from module_one.script_one import hello_world as hw_func hw_func() # This should output "Hello world!" ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值