Python项目中无法从selectthis文件导入函数的原因咨询
问题原因及解决办法
1. 模块搜索路径未包含essentials目录
Python导入模块时,只会在sys.path列表里的目录查找。你用os.chdir()切换了工作目录,但这不会自动把当前目录加入sys.path——毕竟requires.py不在essentials目录里,脚本运行时sys.path默认包含的是requires.py所在的父目录,而非essentials。
解决办法:
不用切换目录,直接把essentials目录添加到sys.path:
import os import sys working_dir = os.getcwd() # 修正拼写错误:wokring_dir → working_dir essential_path = os.path.join(working_dir, "essentials") sys.path.append(essential_path) from selectthis import printthis printthis()
2. 路径拼接的跨平台问题
你用字符串拼接路径的写法(wokring_dir)+essential_path,在Linux/macOS下会因为路径分隔符不匹配出错,应该用os.path.join()(就是你注释掉的那行,它能自动适配不同系统的路径分隔符)。
3. 拼写错误
代码里的wokring_dir少了一个字母k,虽然当前可能不影响目录获取,但后续逻辑容易出问题,建议修正为working_dir。
4. 可选:确保essentials被识别为包
如果你的Python版本低于3.3,需要在essentials文件夹里创建一个空的__init__.py文件,让Python把它当成可导入的包。Python3.3+支持命名空间包,不需要这个文件,但加上也没坏处。
更规范的导入方式
如果你的文件夹结构是:
项目根目录/ ├─ requires.py └─ essentials/ ├─ selectthis.py └─ __init__.py # Python3.3+可选
可以直接用包导入的方式,不用改路径或切换目录:
from essentials.selectthis import printthis printthis()
只要你在项目根目录运行python requires.py,脚本所在的根目录会自动加入sys.path,就能正常导入。
内容的提问来源于stack exchange,提问作者Coding4Life
相关产品推荐
相关产品推荐

