1.安装virtualenv
cd ~pip list#查看pip安装列表
pip install virtualenv
2.创建文件夹,在里面安装虚拟环境
mkdir .venvs
virtualenvs --system-site-package .venvs/lpthw
3.激活虚拟环境
PS C:\Users\xxxx> .\.venvs\lpthw\Scripts\activate
(lpthw) PS C:\Users\xxxx>
在powershell执行脚本时报错,原因是powershell默认执行策略为Restricted,不支持运行脚本,可以对策略进行更改
PS C:\Users\xxxx> .\.venvs\lpthw\Scripts\activate
.\.venvs\lpthw\Scripts\activate : 无法加载文件 C:\Users\crystaldu\.venvs\lpthw\Scripts\activate.ps1,因为在此系统上禁止
运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+.\.venvs\lpthw\Scripts\activate+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo : SecurityError: (:) [],PSSecurityException+ FullyQualifiedErrorId : UnauthorizedAccess
①查询当前策略
PS C:\Users\xxxxx> get-executionpolicy
PS C:\Users\xxxx> set-executionpolicy remotesigned
4.创建骨架项目目录
mkdir -p projects/skeleton/bin #创建一个多级目录,-p 用/隔开
cd projects/skeleton/bin
mkdir-p bin,NAME,tests,docs #创建多个同级目录,-p 用,隔开
5.设置初始文件
(lpthw) PS C:\Users\xxx\projects\skeleton> new-item -type file NAME/__init__.py
(lpthw) PS C:\Users\xxx\projects\skeleton> new-item -type file tests/__init__.py
6.安装文件 setup.py 【C:\Users\xxxx\projects\skeleton\】
try:from setuptools importsetupexceptImportError:from distutils.core importsetup
config={'description': 'My Project','author': 'xxxx','url': 'https://www.cnblogs.com/ohlala/','download_url': 'xxxxx','author_email': 'xxxx@163.com','version': '0.1','install_requires': ['nose'],'packages':['NAME'],'scripts':[],'name': 'projectname'}
setup(**config)
创建NAME_tests.py 【C:\Users\xxxx\projects\skeleton\tests】
from nose.tools import *
importNAMEdefsetup():print("SETUP!")defteardown():print("TEAR DOWN!")deftest_basic():print("I RAN!", end='')
7.复制项目骨架
(lpthw) PS C:\Users\xxx\projects> cp -r .\skeleton\ ex47
(lpthw) PS C:\Users\xxx\projects\ex47>ls
目录: C:\Users\xxx\projects\ex47
Mode LastWriteTime Length Name---- ------------- ------ ----d----- 2019/9/4 10:54bin
d----- 2019/9/4 10:54docs
d----- 2019/9/4 10:54NAME
d----- 2019/9/4 10:54tests-a---- 2019/9/4 10:17 469setup.py
(lpthw) PS C:\Users\xxx\projects\ex47>mv NAME ex47
(lpthw) PS C:\Users\xxx\projects\ex47>ls
目录: C:\Users\xxx\projects\ex47
Mode LastWriteTime Length Name---- ------------- ------ ----d----- 2019/9/4 10:54bin
d----- 2019/9/4 10:54docs
d----- 2019/9/4 10:54ex47
d----- 2019/9/4 10:54tests-a---- 2019/9/4 10:17 469 setup.py
(lpthw) PS C:\Users\xxx\projects\ex47> mv .\tests\NAME_tests.py ex47_tests.py
然后修改ex47_tests.py中的代码
from nose.tools import *
importex47defsetup():print("SETUP!")defteardown():print("TEAR DOWN!")deftest_basic():print("I RAN!", end='')
修改后执行nosetests进行测试
(lpthw) PS C:\Users\crystaldu\projects\ex47>nosetests
.----------------------------------------------------------------------Ran1 test in0.037s
OK
(lpthw) PS C:\Users\crystaldu\projects\ex47> nosetests -s
SETUP!
.I RAN!TEAR DOWN!----------------------------------------------------------------------Ran1 test in0.031s
OK
8.安装
(lpthw) PS C:\Users\xxx\projects\ex47>python .\setup.py install
running install
running bdist_egg
running egg_info
creating ex47.egg-info
writing ex47.egg-info\PKG-INFO
writing dependency_links to ex47.egg-info\dependency_links.txt
writing requirements to ex47.egg-info\requires.txt
writing top-level names to ex47.egg-info\top_level.txt
writing manifest file'ex47.egg-info\SOURCES.txt'reading manifest file'ex47.egg-info\SOURCES.txt'writing manifest file'ex47.egg-info\SOURCES.txt'installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build
creating build\lib
creating build\lib\ex47
copying ex47\__init__.py ->build\lib\ex47
creating build\bdist.win-amd64
creating build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\ex47
copying build\lib\ex47\__init__.py -> build\bdist.win-amd64\egg\ex47
byte-compiling build\bdist.win-amd64\egg\ex47\__init__.py to __init__.cpython-37.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
copying ex47.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO
copying ex47.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying ex47.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying ex47.egg-info\requires.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying ex47.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
zip_safe flagnotset; analyzing archive contents...
creating dist
creating'dist\ex47-1.0-py3.7.egg' and adding 'build\bdist.win-amd64\egg'to it
removing'build\bdist.win-amd64\egg' (andeverything under it)
Processing ex47-1.0-py3.7.egg
Copying ex47-1.0-py3.7.egg to c:\users\xxx\.venvs\lpthw\lib\site-packages
Adding ex471.0 to easy-install.pth file
Installed c:\users\xxx\.venvs\lpthw\lib\site-packages\ex47-1.0-py3.7.egg
Processing dependenciesfor ex47==1.0Searchingfor nose==1.3.7Best match: nose1.3.7Adding nose1.3.7 to easy-install.pth file
Installing nosetests-script.py script to C:\Users\xxx\.venvs\lpthw\Scripts
Installing nosetests.exe script to C:\Users\xxx\.venvs\lpthw\Scripts
Installing nosetests-3.4-script.py script to C:\Users\xxx\.venvs\lpthw\Scripts
Installing nosetests-3.4.exe script to C:\Users\xxx\.venvs\lpthw\Scripts
Using c:\users\xxx\.venvs\lpthw\lib\site-packages
Finished processing dependenciesfor ex47==1.0(lpthw) PS C:\Users\xxx\projects\ex47>
9.卸载
(lpthw) PS C:\Users\xxx\projects\ex47>pip uninstall ex47
Uninstalling ex47-1.0:
Would remove:
c:\users\xxx\.venvs\lpthw\lib\site-packages\ex47-1.0-py3.7.egg
Proceed (y/n)? y
Successfully uninstalled ex47-1.0(lpthw) PS C:\Users\xxx\projects\ex47>