首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建将在指定的.py虚拟环境中运行的python文件,同时通过指定的路径导入其他文件

创建将在指定的.py虚拟环境中运行的python文件,同时通过指定的路径导入其他文件
EN

Stack Overflow用户
提问于 2019-03-28 04:19:37
回答 1查看 46关注 0票数 0

总的来说,我是linux的新手,我的任务是管理一个服务器。由于种种原因,我不得不在我的用户下创建一个python虚拟环境。

文件目录如下:

代码语言:javascript
复制
~
    /python_venv
    /scripts
        /data_curation
            -master.py
            /mods
               -file1.py
               -file2.py
            /other
               -file3.py
        /otherscripts
            -file4.py

^基本上,python venv在~目录中。其他所有内容都存放在scripts/data_curation和scripts/otherscripts中。

我对两件事很好奇。1)有没有一种方法,我可以直接从命令行运行每个文件,而不必手动激活python venv?例如,在.py文件中放置一行代码,通过指定的路径调用venv?

2)确保所有这些文件都可以相互访问的最简单方法是什么?这意味着如果我想把file3.py导入file4.py,我该怎么做呢?

我一直在尝试使用importlib,但是我得到了这个错误:

代码语言:javascript
复制
(python) [user@server]$ python scripts/data_curation/mods/file1.py
scripts/data_curation/device_functions/epon_nokia.py
ModuleSpec(name='file3', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f66399f9a90>, origin='scripts/data_curation/other/file3.py')
__init__.py
scripts/data_curation/other/__init__.py
ModuleSpec(name='__init__', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7f661a7242b0>, origin='scripts/data_curation/other/__init__.py')
__pycache__
scripts/data_curation/other/__pycache__
Traceback (most recent call last):
  File "scripts/data_curation/file1.py", line 21, in <module>
    module = imputil.module_from_spec(spec)
  File "<frozen importlib._bootstrap>", line 568, in module_from_spec
AttributeError: 'NoneType' object has no attribute 'loader'
EN

回答 1

Stack Overflow用户

发布于 2019-03-28 04:24:09

对于第一个问题,您可以在venv中显式引用Python可执行文件:

代码语言:javascript
复制
python_venv/bin/python scripts/data/master.py

或者更改每个脚本开头的shebang,使其直接指向相同的位置,然后只使用scripts/data/master.py运行(尽管这会对位置进行硬编码,这可能不是您想要的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55385789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档