怎么进入python 的venv文件夹_mac下Python关于venv 的使用
参考
环境
Mac
Python环境
virtualenv 用于解决环境依赖而存在,通过 virtualenv 命令可以生成项目的独立依赖环境。
如果本地有多个版本的Python,需要对不同版本的Python单独安装virtualenv。
不清楚管理多个版本Python的,可以参考我的另一篇Mac管理多版本Python
安装virtualenv
不久之前,重装了系统,发现system下的Python(系统自带的版本)默认没有安装pip
wuxiaoxindeMac-mini:~ wuxiaoxin$ pyenv versions
* system (set by /Users/wuxiaoxin/.pyenv/version)
3.7.4
wuxiaoxindeMac-mini:~ wuxiaoxin$ pip -V
pyenv: pip: command not found
The `pip' command exists in these Python versions:
3.7.4
先安装下pip,终端下执行:
sudo easy_install pip
安装完毕如下:
...
Installed /Library/Python/2.7/site-packages/pip-19.2.2-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip
wuxiaoxindeMac-mini:~ wuxiaoxin$ pip -V
pip 19.2.2 from /Library/Python/2.7/site-packages/pip-19.2.2-py2.7.egg/pip (python 2.7)
安装virtualenv
pip install virtualenv
出现这样的警告:
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
说是Python 2.7将于2020年1月1日结束它的生命。。。
看来Python3大势已定。
$ pip install virtualenv
Collecting virtualenv
Using cached https://files.pythonhosted.org/packages/7e/1b/6c00d57127608793e16e8b7f813e64d58a1938505c42fe190d1386ab41e1/virtualenv-16.4.0-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-16.4.0
如果出现这样的错误:
ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv.pyc'
Consider using the --user option or check the permissions.
应该是权限问题,根据提示加上--user试试。
pip install virtualenv --user
安装成功:
Successfully installed virtualenv-16.7.2
查看当前Python版本:system ,已经安装的库:
pip list
$ pip list
Package Version
-------------------------------------- --------
altgraph 0.10.2
bdist-mpkg 0.5.0
bonjour-py 0.3
macholib 1.5.1
matplotlib 1.3.1
modulegraph 0.10.4
numpy 1.8.0rc1
pip 19.2.2
py2app 0.7.3
pyobjc-core 2.5.1
pyobjc-framework-Accounts 2.5.1
pyobjc-framework-AddressBook 2.5.1
pyobjc-framework-AppleScriptKit 2.5.1
pyobjc-framework-AppleScriptObjC 2.5.1
pyobjc-framework-Automator 2.5.1
pyobjc-framework-CFNetwork 2.5.1
pyobjc-framework-Cocoa 2.5.1
pyobjc-framework-Collaboration 2.5.1
pyobjc-framework-CoreData 2.5.1
pyobjc-framework-CoreLocation 2.5.1
pyobjc-framework-CoreText 2.5.1
pyobjc-framework-DictionaryServices 2.5.1
pyobjc-framework-EventKit 2.5.1
pyobjc-framework-ExceptionHandling 2.5.1
pyobjc-framework-FSEvents 2.5.1
pyobjc-framework-InputMethodKit 2.5.1
pyobjc-framework-InstallerPlugins 2.5.1
pyobjc-framework-InstantMessage 2.5.1
pyobjc-framework-LatentSemanticMapping 2.5.1
pyobjc-framework-LaunchServices 2.5.1
pyobjc-framework-Message 2.5.1
pyobjc-framework-OpenDirectory 2.5.1
pyobjc-framework-PreferencePanes 2.5.1
pyobjc-framework-PubSub 2.5.1
pyobjc-framework-QTKit 2.5.1
pyobjc-framework-Quartz 2.5.1
pyobjc-framework-ScreenSaver 2.5.1
pyobjc-framework-ScriptingBridge 2.5.1
pyobjc-framework-SearchKit 2.5.1
pyobjc-framework-ServiceManagement 2.5.1
pyobjc-framework-Social 2.5.1
pyobjc-framework-SyncServices 2.5.1
pyobjc-framework-SystemConfiguration 2.5.1
pyobjc-framework-WebKit 2.5.1
pyOpenSSL 0.13.1
pyparsing 2.0.1
python-dateutil 1.5
pytz 2013.7
scipy 0.13.0b1
setuptools 18.5
six 1.4.1
virtualenv 16.7.2
xattr 0.6.4
新建一个文件夹test,test作为工程文件夹,在该文件夹中创建venv环境。
使用virtualenv命令,可以自动创建venv环境。
可以发现virtualenv已经安装,但是会提示无此命令:
wuxiaoxindeMac-mini:7 wuxiaoxin$ virtualenv --no-site-packages venv
-bash: virtualenv: command not found
可以再执行一次安装命令,终端会提示virtualenv的安装路径:
pip install virtualenv
Requirement already satisfied: virtualenv in /Users/wuxiaoxin/Library/Python/2.7/lib/python/site-packages (16.7.2)
顺着这条路径
/Users/wuxiaoxin/Library/Python/2.7/lib/python/site-packages
可以找到virtualenv命令文件所在路径
/Users/wuxiaoxin/Library/Python/2.7/bin/virtualenv
这个命令virtualenv可以成功执行。至于为什么安装后不会自动设置环境变量,原因不详。
这时候有两种方式可以尝试下
将命令所在路径加载到 PATH
可以通过修改.bash_profile文件来实现,open ~/.bash_profile
export VIRTUALENV_PATH=/Users/wuxiaoxin/Library/Python/2.7/bin
export PATH=$VIRTUALENV_PATH:$PATH
重启终端,查看PATH,发现路径已经成功加到PATH
wuxiaoxindeMac-mini:~ wuxiaoxin$ echo $PATH
/Users/wuxiaoxin/Library/Python/2.7/bin:/Users/wuxiaoxin/.pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
测试成功:
$ virtualenv
You must provide a DEST_DIR
Usage: virtualenv [OPTIONS] DEST_DIR
Options:
--version show program's version number and exit
... (此处省略后面内容)
设置命令的软连接
如果不通过修改.bash_profile达到设置PATH的话。可以直接设置软连接,其实就是将命令拷贝一个替身到/usr/local/bin下。
ln –s 源文件 目标文件
ln -s /Users/wuxiaoxin/Library/Python/2.7/bin/virtualenv /usr/local/bin/virtualenv
这里其实不需要考虑Python版本问题,virtualenv命令已经限定了Python版本。
如果你将.bash_profile中关于virtualenv的路径设置注释掉,重启终端,再执行virtualenv,会发现:
wuxiaoxindeMac-mini:~ wuxiaoxin$ pyenv versions
* system (set by /Users/wuxiaoxin/.pyenv/version)
3.7.4
wuxiaoxindeMac-mini:~ wuxiaoxin$ virtualenv
pyenv: virtualenv: command not found
The `virtualenv' command exists in these Python versions:
3.7.4
wuxiaoxindeMac-mini:~ wuxiaoxin$ pyenv global 3.7.4
wuxiaoxindeMac-mini:~ wuxiaoxin$ python -V
Python 3.7.4
wuxiaoxindeMac-mini:~ wuxiaoxin$ virtualenv
You must provide a DEST_DIR
Usage: virtualenv [OPTIONS] DEST_DIR
Options:
--version show program's version number and exit
...(此处省略后面内容)
现在可以正常使用了:
wuxiaoxindeMac-mini:test wuxiaoxin$ virtualenv --no-site-packages venv
New python executable in /Users/wuxiaoxin/Desktop/test/venv/bin/python
Installing setuptools, pip, wheel...
done.
test项目独立依赖环境
加上了参数--no-site-packages,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。
实测不加这么个参数,直接执行virtualenv venv也是一样的效果呢。
如何知道?启动该虚拟环境,在该环境下pip list即可一目了然。
比如我的一个虚拟环境安装在这个路径下:
/Users/vampire/Desktop/test3/venv
那么可以这样启动虚拟环境:
source /Users/vampire/Desktop/test3/venv/bin/activate
如图,已经启动虚拟环境:
已经进入虚拟环境.jpg
如下,test3中使用参数--no-site-packages,test4中不使用参数--no-site-packages,实测可以看出,--no-site-packages参数加上和不加上,效果一样:
效果一样.jpg
只有一种可能,--no-site-packages是默认参数。
终端下执行virtualenv可以看到:
果然--no-site-packages是默认参数.jpg
那么 --system-site-packages 就是它的对立参数了,测试下:
全局依赖参数.jpg
可以看到,安装在系统的Python环境中的库,也复制到这个虚拟环境中来了。
还需要注意的是这个参数:
-p PYTHON_EXE, --python=PYTHON_EXE
The Python interpreter to use, e.g.,
--python=python3.5 will use the python3.5 interpreter
to create the new environment. The default is the
interpreter that virtualenv was installed with
(/usr/bin/python)
可以看出,执行virtualenv命令生成的虚拟环境,默认是依据
/usr/bin/python目录下的Python环境。其实也就是当前安装virtualenv所属的Python的版本。
当前电脑下有两个Python环境:
wuxiaoxindeMac-mini:test1 wuxiaoxin$ pyenv versions
* system (set by /Users/wuxiaoxin/.pyenv/version)
3.7.4
如果这样执行命令,会怎样?
wuxiaoxindeMac-mini:test1 wuxiaoxin$ virtualenv --python=python3.7 venv
Running virtualenv with interpreter /Users/wuxiaoxin/.pyenv/shims/python3.7
pyenv: python3.7: command not found
The `python3.7' command exists in these Python versions:
3.7.4
如果是这样限制的话,需要创建源自python3.7.4版本的依赖环境,直接使用pyenv进行切换即可,virtualenv不需要带这个参数--python了。
终端下进入和退出venv虚拟环境:
假设一个新的venv虚拟环境所在的目录如下:
/Users/vampire/Desktop/test/venv
venv目录中包含如下文件夹:
bin
include
lib
而该入口文件正是处于bin文件中的activate文件,那么进入虚拟环境的命令如下:
source /Users/vampire/Desktop/test/venv/bin/activate
退出虚拟环境的命令:
deactivate #这个是全局的命令,任何路径下执行都行
venv环境下安装库
终端下先进入该venv环境,再执行pip install 安装。
venv下安装库.png
关于 venv 移动位置
一般我们使用virtualenv的目的是为了让一个工程拥有独立的依赖环境。
我们会把virtualenv生成的环境venv放置在工程路径下。
如果我们移动了这个工程的路径,venv路径也会随之改变,因此注意修改这个命令文件
activate,打开这个文件,你会发现其实就是bash shell脚本,该命令的路径也固定写在其中:
venv路径
因此一旦移动venv,记得修改venv/bin/activate文件中的路径。如果是复制了venv,也需要对复制venv的venv/bin/activate文件中的路径,原venv/bin/activate保持不变。
怎么进入python 的venv文件夹_mac下Python关于venv 的使用相关推荐
- github船舰新文件夹_mac下搭建hexo+github
在这之前,网络上有很多教程,但是还是基于自己遇到的问题和流程写一下.因为自己是小白,所以在过程中遇到了很多小白的问题.这里简单说明 一.安装 首先,需要安装node.js.npm和Git Git可直接 ...
- python读取数据文件夹_使用python依次读取文件中的所有csv格式的数据
使用python依次读取文件中的所有csv格式的数据: #coding=gbk import pandas as pd import os path = r'D:\ml_datasets\PHM\c6 ...
- macbook python文件路径_mac下python目录
python和pip需要配合一起使用,python版本两个以上就经常乱,整理一下! 查询python执行文件位置: Chaim:~ Chaim$ type python python is hashe ...
- python生成多级文件夹_利用 python 遍历多级文件夹处理不同文件
需求:近期,同事在处理文件的时候,常常需要从一堆文件中提取一些数据信息: 分析:由于每个文件夹下面的文件或文件夹多如牛毛,文件类型也很多种,需要针对不同文件类型做处理,人工处理是不现实的,只能用脚本处 ...
- mac系统python读取文件路径_mac下python目录
经常碰到安装成功但调用不成功,可能都是装错地方了,可以直接命令行python2.7或python2.6执行. 查看python位置: Chaim:texas2016 Chaim$ which pyth ...
- python判断是不是文件夹_Python判断文件和文件夹是否存在的方法
一.python判断文件和文件夹是否存在.创建文件夹 复制代码代码如下: >>> import os >>> os.path.exists("d:/ass ...
- Python监控目录文件夹,并使用SFTP上传目录及文件到linux服务器
Python 扫描监控本地文件夹并进行超大文件上传 方案1:WebUploader大文件分块多线程并发上传 方案2:watchdog目录文件夹监控,paramiko STFP上传服务器 方案3:优化2 ...
- python读取一个文件夹/子文件夹下的所有文件名字
python读取一个文件夹/子文件夹下的所有文件名字 示例代码: import osfile_path = './images/' all_file_name = os.listdir(file_pa ...
- Python递归获取文件夹下面所有文件名字:
Python递归获取文件夹下面所有文件名字: def getAllFiles(targetDir):files = []listFiles = os.listdir(targetDir)for i i ...
最新文章
- 王者服务器维护什么时间结束s22,王者荣耀s22赛季结束时间 s22赛季什么时候结束?[多图]...
- 【学习笔记】mybatis自定义插件案例代码
- Spring 事务core 模块-JdbcTeamplate 对象
- Linux下使用g++编译C++程序——Compiling Cpp
- linux部署的java应用,浏览器访问时,报域名解析错误
- idea关闭当前项目
- Comcast Xfinity家庭安全系统被曝严重漏洞
- Windows系统管理和网络服务笔记生涯 源于BENET2.0课程(S2)
- php html页面显示乱码怎么解决方法,html网页乱码原因以及解决办法
- 谷歌服务框架_谷歌服务框架下载_谷歌服务框架全版本整理
- Goolgle10个搜索技巧
- 「笔耕不辍」常见远程调用协议
- Softing pnGate系列网关:将PROFIBUS总线集成到PROFINET网络
- 电烙铁使用方法总结集合
- 2017年的错误和失误
- “爱拍照”的OPPO逆袭战:合并一加,跑步造车
- 计算机屏幕纵向显示如何改,电脑桌面纵向怎么设置
- 3D游戏设计-模型与动画
- 企业搭建APP怎么正确选择云服务器配置?
- 网站SEO优化基本流程是什么?看完就明白了!
热门文章
- Android 支付宝 微信 银联 支付
- psutil模块简说
- word如何设置长宽高_word页面高度和宽度怎么设置
- 基于tensorflow-gpu + E5 CPU + GTX1660 SUPER + TESLA-P40 显卡 安装CUDA(11.8.0)
- 《Linux是怎样工作的》读书笔记
- 7-3 sdut-sel-while-1 社会主义核心价值观之理解与输出 (20 分)
- 巧用 chrome 浏览器的开发者工具解决sdk问题
- 今天收到一条诈骗短信!
- Python学习笔记·
- KNN(K最近邻)分类算法_糖潮丽子的博客