python - 如何在 python shell 中激活虚拟环境
问题描述
我创建了一个虚拟环境(目录为env)并安装了一些第三方包。我使用 Mac OSX。如何在python 交互式 shell中激活我的 venv?我试过了
source env/bin/activate
并得到错误信息:SyntaxError: invalid syntax
我已经看到有人在 8 年前发布了这个问题,但我还没有找到我要找的东西……我还检查了 python 文档,但我不清楚如何激活它
https://docs.python.org/3/tutorial/venv.html?highlight=virtual
有人可以帮忙吗?
解决方案
在您的 shell 中,通常python
会将您指向 python 的默认实例:
python
Python 2.7.14 (default, Sep 25 2017, 09:53:22)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
这是因为python
位于/usr/local/bin
哪个是您的默认值的一部分PATH
。现在,当您source activate <some_env>
修改时 PATH
,您实际上可以在/path/to/venv/some_env/bin/activate
文件中看到:
#!/bin/bash
...
if [[ $PATH == *"CONDA_PATH_PLACEHOLDER"* ]]; then
# If it did, replace it with our _NEW_PART
export PATH="$($_CONDA_PYTHON -c "import re; print(re.sub(r'CONDA_PATH_PLACEHOLDER', r'$_NEW_PART', '$PATH', 1))")"
else
#### HERE IS WHERE THAT PATH IS OVERWRITTEN
export PATH="$_NEW_PART:$PATH"
fi
# CONDA_DEFAULT_ENV is the shortest representation of how conda recognizes your env.
# It can be an env name, or a full path.
# Last date of change: 2016-06-21
# If the string contains / it's a path
if [[ "$@" == */* ]]; then
export CONDA_DEFAULT_ENV=$(get_abs_filename "$args")
else
export CONDA_DEFAULT_ENV="$args"
fi
...
esac
我正在使用 anaconda,但概念是相同的,并...
指出我在哪里剪掉了部分脚本。它有效地将 venvpython
可执行路径导出到PATH
. venv
因此,除非出现以下两种情况之一,否则您不会指向您的 python:a)您显式调用该 python 可执行文件或 b )您source activate myenv
然后调用.python
所以正确的工作流程是:
source /path/to/myenv/bin/activate myenv
然后打电话
python
例如,第一次调用$PATH
是在激活我的 conda env 之前,第二次调用是之后:
➜ ~ echo $PATH
/Users/mm92400/bin:/usr/local/bin:/Users/mm92400/anaconda3/bin:/Users/mm92400/.cargo/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands
➜ ~ source activate py36
(py36) ➜ ~ echo $PATH
/Users/mm92400/anaconda3/envs/py36/bin:/Users/mm92400/bin:/usr/local/bin:/Users/mm92400/anaconda3/bin:/Users/mm92400/.cargo/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands
注意$PATH
有什么不同
推荐阅读
- python - 在第三个中创建两个模型之间的关系
- json - jq 将命名数组转换为列表
- asynchronous - 我怎样才能等待一个变量
- scala - Spark Sql 排序操作无法正常工作
- php - 如何更改数组中的结果?
- javascript - 切换功能有效,但 jQuery 中的 slideToggle 无效
- r - 一旦我在 Quantstrat R 中有一个职位,就停止添加更多职位
- javascript - HTTP 错误:400,请求有错误错误:函数未正确部署。firebase-实时数据库
- java - 如何从 Servlet 获取和 XML 文件
- python - 在 Django 后端仔细检查电子邮件验证