Python 2.7 PyCharm和Windows 10命令行中的PYTHONPATH
我已经在Pycharm中创建了一个项目,我可以成功地运行它以及它的单元测试。但是,当我尝试从tests文件夹所在位置的命令行运行pytest时,我得到一个错误,测试表明它在给定模块(测试中)中找不到对象。我知道Pycharm在启动任何东西之前会运行某些命令,并通过PYTHONPATH导出信息以使其测试工作正常,但是如果没有Pycharm,我怎么做同样的事情呢 下面显示了我的项目结构:Python 2.7 PyCharm和Windows 10命令行中的PYTHONPATH,python-2.7,environment-variables,pycharm,Python 2.7,Environment Variables,Pycharm,我已经在Pycharm中创建了一个项目,我可以成功地运行它以及它的单元测试。但是,当我尝试从tests文件夹所在位置的命令行运行pytest时,我得到一个错误,测试表明它在给定模块(测试中)中找不到对象。我知道Pycharm在启动任何东西之前会运行某些命令,并通过PYTHONPATH导出信息以使其测试工作正常,但是如果没有Pycharm,我怎么做同样的事情呢 下面显示了我的项目结构: PycharmProjects\ ProjectFolder\ - setup.py
PycharmProjects\
ProjectFolder\
- setup.py
- readme.txt
module\
- __init__.py
- module.py
tests\
- __init__.py
- test_module.py
在Pycharm运行我的代码之前,它会在脚本启动时执行以下操作(我从设置>控制台>Python控制台获得)。我不知道如何分辨工作路径和PYTHON路径中的内容
import sys; print('Python %s on %s' % (sys.version, sys.platform))
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
但是,当我在项目文件夹中从命令行运行时,会出现以下类型的错误。什么给
D:\user\development\PycharmProjects\ProjectFolder> pytest
============================= test session starts =============================
platform win32 -- Python 2.7.11, pytest-3.1.3, py-1.4.34, pluggy-0.4.0
rootdir: D:\user\PycharmProjects\ProjectFolder, inifile:
collected 4 items
tests\test_module.py .F.F
================================== FAILURES ===================================
_______________________ TestModule.test_ONE ________________________
self = <tests.test_module.TestModule testMethod=test_ONE>
def test_ONE(self):
> someObject = module.SomeObject("someObject.log")
E AttributeError: 'module' object has no attribute 'SomeObject'
tests\test_module.py:23: AttributeError
________________________ TestModule.test_TWO _________________________
self = <tests.test_module.TestModule testMethod=test_TWO>
def test_TWO(self):
> someObject = module.SomeObject("someObject.log")
E AttributeError: 'module' object has no attribute 'SomeObject'
tests\test_module.py:8: AttributeError
===================== 2 failed, 2 passed in 0.14 seconds ======================
D:\user\development\PycharmProjects\ProjectFolder>pytest
===========================================测试会话开始=============================
平台win32——Python 2.7.11、pytest-3.1.3、py-1.4.34、pluggy-0.4.0
rootdir:D:\user\PycharmProjects\ProjectFolder,文件:
收集4项
测试\测试模块.py.F.F
===================================================故障===================================
_______________________TestModule.test_ONE________________________
自我=
def测试一(自身):
>someObject=module.someObject(“someObject.log”)
E AttributeError:“模块”对象没有属性“SomeObject”
tests\test_module.py:23:AttributeError
________________________TestModule.test_二_________________________
自我=
def测试二(自身):
>someObject=module.someObject(“someObject.log”)
E AttributeError:“模块”对象没有属性“SomeObject”
tests\test_module.py:8:AttributeError
============================2失败,2在0.14秒内通过======================
您需要将PYTHONPATH环境变量设置为包含源程序包/模块的目录。因此,如果您的包位于C:\my\u stuff\foo\my\u package
,您将希望PYTHONPATH位于C:\my\u stuff\foo
。您还需要确保在包含源代码的所有目录中都有\uuuu init\uuuu.py
文件
您可能还需要将python区域添加到PATH
env变量中。如果python.exe文件位于C:\Python27\python.exe
,则希望C:\Python27
位于任何其他python目录之前的PATH
要设置环境变量
单击开始按钮
单击文件资源管理器
右键单击“这台电脑”->属性
单击高级系统设置
单击环境变量…
PYTHONPATH
。如果存在,请单击编辑…。如果不存在,请单击新建…变量名:PYTHONPATH
变量值:C:\my\u stuff\foo
请注意,如果有多个路径,它们将用分号分隔,不带空格。保存多个文件后,界面看起来会略有不同,但仍然非常直观。使用Edit
和New
您期望的方式我尝试过这个方法,但没有解决我的问题。我会更好地更新我的票证。您的
PYTHONPATH=D:\user\PycharmProjects\ProjectFolder
?对于模块
,您的导入
语句在tests\test\u module.py
中是什么样子的?在这种情况下,它需要是来自模块导入模块的,而SomeObject
将是D:\user\PycharmProjects\ProjectFolder\module\module.py中的类PYTHONPATH=D:\user\PycharmProjects\ProjectFolder
2)。在tests\test_module.py
内部,导入显示import module
;3). 我尝试了模块导入模块中的,但PyCharm中出现了以下错误(但命令行现在可以工作)---模块导入模块中的导入错误:无法导入名称模块
为什么这两个错误(PyCharm和命令行)在设置方面互相争斗??我猜您的项目结构在PyCharm中没有正确设置,无法与您试图在命令行上执行的操作兼容。如果您制作了PYTHONPATH=D:\user\PycharmProjects\ProjectFolder;D:\user\PycharmProjects\ProjectFolder\module
和您的导入语句import module
我打赌这两种方法都可以,但这不是正确的方法。尝试将项目内容根目录设置|项目|项目结构
更改为D:\user\PycharmProjects\ProjectFolder
。如果这不起作用,我可能需要在PyCharm中看到您的prj结构的图像