似乎他们在Python 3中取消了通过删除快速加载脚本的所有简单方法 execfile()
有没有一个明显的选择我错过了?
假设我在2种不同的虚拟环境中安装了2个不同版本的应用程序.myapp v1.0和myapp v2.0.
现在我想比较一下.比较是用python本身编写的.最好的方法是什么?我们假设我可以单独运行它们并且都写一个输出文件,我可以稍后比较.
一种方法是编写一个bash脚本(这就是我目前所拥有的).我激活一个virtualenv,运行myapp v1.0,激活另一个virtualenv,运行myapp v2.0.稍后在这些文件上运行比较模块.但是我想在那里添加更多的动态(采用一些可选的参数等),使用python会更容易.
编辑:
目前我有类似的东西(一个bash脚本):
source virtualenv1/bin/activate
python my_script.py
deactivate
source virtualenv2/bin/activate
python my_other_script.py
deactivate
python my_comparison_script.py
Run Code Online (Sandbox Code Playgroud)
相反,我只想这样做:
python my_comparison_script.py
Run Code Online (Sandbox Code Playgroud)
我的脚本将在此内部运行.
我需要从python脚本中启动venv/pyvenv,我知道正式文档要运行:
activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
Run Code Online (Sandbox Code Playgroud)
但我没有activate_this.py文件,我无法找到任何地方如何创建一个.
我正在运行python 3.4.1.知道我需要做什么吗?
我需要一个python脚本来激活virtualenv,在virtualenv中运行另一个python程序,然后在第二个python程序关闭后关闭virutalenv。这是我的代码:
import os
import subprocess
from subprocess import Popen
activate_dir = "C:/Users/JohnDoe/theprogram/Scripts/"
os.chdir(activate_dir)
subprocess.Popen(["activate.bat"])
cal_dir = "C:/Users/JohnDoe/theprogram/"
os.chdir(cal_dir)
os.system('python program_file.py')
Run Code Online (Sandbox Code Playgroud)
但是,当此代码运行时,我收到一个导入错误,program_file
这意味着 virtualenv 未激活。我怎样才能解决这个问题?
谢谢
编辑: 这是在 Windows 环境中。
我需要利用我的本地环境,并为特定工具使用虚拟环境,但该工具与我的本地环境存在依赖性问题。(我已经知道如何在脚本中使用 virtualEnv,这里我尝试在脚本中创建一个新的虚拟环境。)我想在运行时在 python 程序中创建一个 python 虚拟环境(因为我必须在程序末尾删除此环境)。需要这个环境作为关键字参数 env 传递给 python 子进程。
我知道我可以使用命令作为 python 子进程的参数来创建 virtualEnv。我正在寻找其他方法
我正在尝试使用 venv 在 Linux 中启动电报机器人。但只有手动激活 venv 时,机器人才会启动。
Python代码:
#!env/bin/python3
# -*- coding: utf-8 -*-
import config
import telebot
bot = telebot.TeleBot(config.token)
@bot.message_handler(content_types=["text"])
def repeat_all_messages(message):
bot.send_message(message.chat.id, message.text)
if __name__ == '__main__':
bot.infinity_polling()
Run Code Online (Sandbox Code Playgroud)
机器人以命令启动:
root@ubuntu-s-1vcpu-1gb-ams3-01:~/jira_bot# source env/bin/activate
(env) root@ubuntu-s-1vcpu-1gb-ams3-01:~/jira_bot# python3 sreda_bot.py
Run Code Online (Sandbox Code Playgroud)
但如果我尝试在不激活 venv 的情况下启动它:
root@ubuntu-s-1vcpu-1gb-ams3-01:~/jira_bot# python3 sreda_bot.py
Traceback (most recent call last):
File "sreda_bot.py", line 4, in <module>
import telebot
ModuleNotFoundError: No module named 'telebot'
Run Code Online (Sandbox Code Playgroud)