ANSA导入第三方包需要利用conda。conda可以建立一个虚拟环境,虚拟环境包含了指定版本的python,可以在这个虚拟环境中用conda install安装包。不同的虚拟环境之间的包和python版本是独立的。而ansa可以引用conda的虚拟环境。因此,导入第三方包首先需要在连接互联网的机器上创建conda虚拟环境,其次在虚拟环境中安装包(conda install需要联网),然后把这个虚拟环境复制拷贝到不联网的机器中,最后再添加虚拟环境在ansa中。
我这里是使用Anaconda,和其他文章以及文档用的miniconda有所不同。
第一步,创建虚拟环境。首先,在可以联网的机器上打开cmd.exe,定位路径到Anaconda安装路径下的script文件夹,我电脑的路径是D:\Software\anacoda\Scripts,用下列命令创建conda环境:
conda create --name python381 python=3.8.1
(注:这里的python版本需要与ansa一样,在ansa中打开scriptEdit,输入python代码:
import sys
print(sys.version)
可以看到ansa使用的python版本),用下列命令激活
conda init cmd.exe
conda activate python381
显示
即为成功。再在虚拟环境中安装第三方包,我这里安装的是urllib3。
conda install urllib3
第二步,复制虚拟环境。用下面命令复制虚拟环境
conda pack -n python381 -o python381.tar.gz
成功后在D:\Software\anacoda\Scripts可以看到文件python381.tar.gz,将这个文件传入不联网的机器中。我的内网机器Anaconda安装到C盘了,为了避免ansa访问不了,修改一下conda环境的默认路径
conda config --add envs_dirs D:/software/anacoda/env
。再将python381.tar.gz复制到上述路径中解压,解压过程中会有同名文件,全部选择替换。完成后打开cmd,进入Anaconda的Scripts的路径激活虚拟环境。
conda init cmd.exe
conda activate python381
第三步,在ansa中配置conda环境。这里官方文档给出的方案是
import sys
CONDA_ENV='/HOME/my_name/miniconda3/env/python38/lib/python3.8/site-packages'
sys.path.append(CONDA_ENV)
但是Anaconda没有这个路径。我找到的办法是,先在pycharm导入conda环境(Python Interpreter中选择add interpreter在conda environment界面的using existing environment的下拉框里面选择我们的环境),再执行
import urllib3
import sys
print(sys.path)
将这里面所有和conda虚拟的环境相关的全部导入手动ansa。最后我在Ansa的ScriptEdit中的代码是
import sys
CONDA_ENV=['D:\\software\\anacoda\\env\\python381\\DLLs','D:\\software\\anaconda\\env\\python381\\lib','D:\\software\\anacoda\\env\\python381','D:\\software\\anacoda\\env\\python381\\lib\\site-packages']
for a in CONDA_ENV:
sys.path.append(a)
import urllib3
成功运行。