影响进口的Python环境因素

时间:2014-04-15 19:34:04

标签: python-2.7

我有一个非常奇怪的问题,我甚至不知道如何开始调试。

我正在运行一个python包,四天前,没有任何问题。两天前,我开始遇到奇怪的错误,例如a object does not have attribute tryClick(“a”是我的班级)。早在此问题开始之前的一周内,就没有触及tryClick的代码。

将变量从一个文件导入另一个文件也很麻烦。例如:

my_var = None

class myClass(Base_Test):

    def myfunction(self):
        global my_var
        my_var = True
        return my_var

导入my_var曾用于返回True但现在返回None

奇怪的是,如果我把我的包从我们的git repo拉到干净的机器上,设置PYTHONPATH,并运行包,一切正常!我清除了机器中的代码,重新提取代码并运行包但仍然遇到这些错误。

我的结论是,这是环保的,但我不知道它可能是什么!什么样的环境因素可能导致这个问题?


不是说这个错误给我的解释增加了很多,但它已被请求,所以你去吧

Traceback (most recent call last):
  File "M:\depot\external-access\gitfusion\MyShipRush\Selenium\WebShipping\selenium_error_report.py", line 35, in decorator
    value = f(*args, **kwargs)
  File "C:\Selenium\WebShipping\Tests\MainForm\SampleCode_toGetStaleElementReferenceException_test.py", line 22, in test_Staleelementexception
    self.tryClick('#%s .service-row' % service_id)
AttributeError: 'a' object has no attribute 'tryClick'

更完整的课程示例:

import unittest
import Shortcuts
from Utils import Base_Test
from LogUtils import logger

class a(Base_Test):

    def test_togetstaleelementexception(self):

        Shortcuts.open_settings(self)

        logger.debug("Selecting Service")
        Shortcuts.click_dd(self)
        service_id_elements = self.find_elements("#ServiceDropDown .row-holder")
        service_id = service_id_elements[1].get_attribute("id")
        self.tryClick('#%s .service-row' % service_id) 

我可以向您保证tryClick()中存在BaseTest。如果我在干净的机器上运行此代码,则没有错误。如果我在我的机器上运行它,就会出现错误。代码完全相同,因为我已经删除并取消了两个地方的所有代码。

1 个答案:

答案 0 :(得分:0)

@JFSebastian - 你的评论钉了它!

虽然我的包中只有一个BaseTest模块的引用,但是有两个目录在我的机器上保存它。两个目录都在sys.path - 当我移动我的代码时,我知道将新目录添加到PATH,但没有考虑到离开旧目录的影响。

我删除了对旧版本的引用,一切都再次有效。

谢谢!