使用 Virtualenv 从 shell 脚本运行 Python 脚本,并使用 -m 作为模块运行

问题描述 投票:0回答:1

如何从 shell 脚本运行 Python 脚本,条件如下:

  1. 它使用并行文件夹中的帮助程序脚本
  2. 它的子文件夹使用虚拟环境

我的文件/文件夹结构如下所示:

project_folder
  -subfolder_prog_1
    -prog1.py
  -subfolder_prog_2
    -prog2.py
  -helpers
    -helper.py

每个子文件夹_prog_x都使用自己的虚拟环境(pipenv)。

prog1.py 和 prog2.py 像这样使用 helper.py:

from helpers.helper import helpful_function

现在 - 我知道我可以像这样从 shell 激活环境:

cd ~/git/project_folder/subfolder_prog_1
pipenv run python prog1.py

我还知道,如果我想使用来自并行文件夹的导入,我必须从父文件夹将脚本作为模块运行,如下所示:

cd ~/git/project_folder/
python -m subfolder_prog_1.prog1

但是我怎样才能将两者结合起来呢?

我试过了

cd ~/git/project_folder/
pipenv run python -m subfolder_prog_1.prog1

但这给了我一个 ModuleNotFoundError: No module named 'subfolder_prog_1'.

感谢所有提示!

python python-3.x pipenv
1个回答
0
投票

你可以这样写你的代码:

cd ~/git/project_folder/
pipenv run python ./subfolder_prog_1/prog1.py

您还可以在使用

pipenv run
时检查当前目录,方法是将以下行代码添加到当前代码中:

import os
######Your code here######
os.system('pwd')

这将打印当前执行的目录。 (使用

os.curdir
无济于事,因为它会显示一个点)

© www.soinside.com 2019 - 2024. All rights reserved.