我是Python新手。我使用以下目录结构,并尝试将模块OrgRepo导入Func1。我使用virtualenv和vs代码作为我的IDE。在
src/
├── Functions
│ ├── Func1
│ └── Func2
└── Shared
├── __init__.py
├── Repositories
│ ├── __init__.py
│ ├── OrgRepo
└── Utilities
├── __init__.py
└── DictUtil
我也尝试过不使用“init.py”
这是我的道路:
['/Users/username/Documents/Projects/myproject/name/src/Functions/Func1', '/Users/username/anaconda3/envs/my_virtual_env/lib/python37.zip', '/Users/username/anaconda3/envs/my_virtual_env/lib/python3.7', '/Users/username/anaconda3/envs/my_virtual_env/lib/python3.7/lib-dynload', '/Users/username/.local/lib/python3.7/site-packages', '/Users/username/anaconda3/envs/my_virtual_env/lib/python3.7/site-packages']
为了将OrgRepo导入Func1,我尝试了以下操作:
1:from .Shared.Repositories import OrgRepo
ModuleNotFoundError: No module named '__main__.Shared'; '__main__' is not a package
2:from ..Shared.Repositories import OrgRepo
'
ValueError: attempted relative import beyond top-level package
3:from src.Shared.Repositories import OrgRepo
ModuleNotFoundError: No module named 'src'
4:`from共享存储库导入OrgRepo1
'ModuleNotFoundError: No module named 'Shared'
5:我正在使用VS代码,当我试图保存文件时:
它会自动更改为:
import OrgRepo
import DictionaryUtilities
import datetime
import json
import sys
sys.path.insert(0, 'src/Repositories/')
第六章:
import sys
sys.path.insert(
0, '/Users/username/Documents/Projects/project/m/src/Repositories')
import OrgRepo
还有这个:
sys.path.insert(0, 'Repositories')
sys.path.insert(0, .'Repositories')
sys.path.insert(0, ..'Repositories')
在运行或保存时,vs代码将其更改为:
import OrgRepo
import sys
sys.path.insert(
0, '/Users/username/Documents/Projects/project/m/src/Repositories')
并收到以下错误:
ModuleNotFoundError: No module named 'OrgRepo'
我可以安装这个与PIP和导入它,但这不适合我们的需要。在
我读过这些帖子: Importing files from different folder
Python import modules, folder structures
How to Import Multiple Python Modules from Other Directories
How to properly import python modules from an adjacent folder?
我也试着阅读/理解其他一些帖子。我甚至试着敲了几次磁通电容器都没用。在
编辑:我用这段代码作为AWS Lambda函数上传。而系统路径解决方案在本地工作,这使得它不适合我的工作流程。这需要我改变系统路径上载时导入并导致Intellisense出现问题。我希望能够直接导入模块。e、 所以Intellisense不会抛出错误,我可以压缩并上传我的包到AWS。当我能够导入<module_name>
时,将我的包上载到AWS没有问题。在
我在Anaconda中激活环境,然后导出以下PYTHONPATH环境变量:
export PYTHONPATH=src/shared/repositories:src/shared/utilities
我也试过export PYTHONPATH=$PATH:src/shared/repositories:src/shared/utilities
这在一段时间内有效,现在我得到了智能感知。当我试图从/src
上面的目录运行脚本时,似乎没有遇到此错误。在
如果有人能告诉我如何使用标准import <module>
导入我的模块,并使其始终工作,我将不胜感激。在
基本上说一个目录不能被导入,但是目录中的一个文件可以被导入。在
假设你有组织py在OrgRepo中归档,您可以:
或者,如果您想从中调用一个特定的方法,让我们假设
^{pr2}$do_it
:Read more
我想你想做的是像下面这样的事情。我已经清理了一些目录名(通常目录是小写的下划线,类名是大写的),在python文件中添加了
.py
扩展名,并尝试创建一个最简单的环境来复制您的场景。希望这是有帮助的。在设置环境
运行它
^{pr2}$相关问题 更多 >
编程相关推荐