小记内网环境创建python虚拟环境的方法

1,307 阅读2分钟

最近要做个桌面端程序设计,因我司在内网环境,想用Electron太麻烦,准备用PyQt试试。

在公司电脑装好了Anaconda以后,执行conda create -n py来新创建一个python的虚拟环境却出了错。

发现conda create的时候要连conda官网即使用清华镜像也是外网的,与我司内网原有的python源是pypi的。

此时,经过搜索,发现了三种解决方法:

  1. 使用python包virtualenv
  2. 在内网搭建一个源
  3. 离线安装

第三种治标不治本,第二种所需空间太大,故放弃。

但是第一种可以复用我司内网原有的pypi源,因此采取第一种方法。

但是在这里踩了一个坑:

我司的镜像是基于nexus的,在需要复制地址的时候,弹窗出来的地址是形如http://ip_address:port/nexus3/repository/pypi-public/的,在按照网络教程执行如下指令配置内网源,

pip config set global.index-url http://ip_address:port/nexus3/repository/pypi-public/

然后执行命令pip install virtualenv后报错无法找到该包。

经过摸索后,发现改错了,只能够再次修改,打开文件夹C:\Users\{用户名}\AppData\Roaming\pip修改pip.ini (linux地址~/.pip/pip.conf

[global]
trusted-host = {内网源ip地址或域名}
index = http://ip_address:port/nexus3/repository/pypi-public/pypi
index-url = http://ip_address:port/nexus3/repository/pypi-public/simple

再次执行命令pip install virtualenv后成功安装。 在上方的配置文件中,trusted_host项的配置是由于如果不加上这项pip install的时候会报warning,说当前站点用http不是https不安全还是啥的吧啦吧啦....

在安装好了该包以后,进入一个要拿来创建虚拟环境的目录,我选择了Anaconda目录下的envs文件夹。

在当前目录下执行virtualenv pyenv1,等执行完毕后,原地已经多了一个pyenv1文件夹。

理论上来说,执行到pyenv1\Scripts目录下activate已经可以激活虚拟环境了。

但是在这里我又踩了一个坑...

由于在Windows里面我把Anaconda安装目录下的Scripts文件夹也加到了环境变量之中,因此当我执行到了pyenv1\Scripts目录下执行activate的时候完全没反应。刚开始以为是指令不对,但是看了很多教程也没看出来是什么错误...

后来发现是因为执行了环境变量里面的activate,执行./actvate后成功把环境切到了pyenv1

执行deactivate可以退出虚拟环境。

ps:是否处于虚拟环境中的标志可参考命令行中左侧有没有一个(your_env_name)