小编E.Z*_*.Z.的帖子

PyLint"无法导入"错误 - 如何设置PYTHONPATH?

我正在Windows上的Wing IDE中运行PyLint.我的项目中有一个子目录(包),在包中我从顶层导入一个模块,即.

__init__.py
myapp.py
one.py
subdir\
    __init__.py
    two.py
Run Code Online (Sandbox Code Playgroud)

two.py我内部import one,这在运行时工作正常,因为顶级目录(从中myapp.py运行)位于Python路径中.但是,当我在two.py上运行PyLint时,它给出了一个错误:

F0401: Unable to import 'one'
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

python pylint virtualenv pythonpath

133
推荐指数
9
解决办法
15万
查看次数

Linux终端:输入反馈消失,换行符不显示

我不得不运行一个命令行工具(Python脚本),其输出似乎打破了我的终端.执行完成后,输入的反馈消失了(我看不到我正在键入的内容),也没有显示换行符.如果终端通过远程启动出现这种情况Putty,而且在本地使用时gnome-terminal.

例如,问题发生后,如果我输入ENTER pwd ENTER,我希望看到:

[userA@host006 ~]$
[userA@host006 ~]$ pwd
/home/userA
[userA@host006 ~]$
Run Code Online (Sandbox Code Playgroud)

但实际上输出是:

[userA@host006 ~]$ [userA@host006 ~]$ /home/userA
                                                             [userA@host006 ~]$
Run Code Online (Sandbox Code Playgroud)

修复它的唯一方法是关闭该终端并启动一个新终端.

也许是相关的:脚本输出包含一些基于终端的格式化(例如,反转前景/背景以突出显示某些状态消息).如果我将此输出转储到文件,我可以看到类似的东西[07mSome Message Here[0m.

我有什么想法可以防止这种情况发生?

linux bash terminal putty gnome-terminal

50
推荐指数
2
解决办法
2万
查看次数

pip安装PyQt IOError

我正在尝试使用pip安装PyQt包,但是我收到此错误:

~$ pip install PyQt

Downloading/unpacking PyQt  
Downloading PyQt-x11-gpl-4.8.3.tar.gz
(9.8Mb): 9.8Mb downloaded   Running
setup.py egg_info for package PyQt
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
    IOError: [Errno 2] No such file or directory:
'/home/john/build/PyQt/setup.py'
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 14, in
<module>

IOError: [Errno 2] No such file or
directory:
'/home/john/build/PyQt/setup.py

---------------------------------------- Command python setup.py egg_info
failed with error code 1 Storing
complete log in
/home/john/.pip/pip.log
Run Code Online (Sandbox Code Playgroud)

python pip pyqt ioerror setup.py

29
推荐指数
3
解决办法
2万
查看次数

使用<DIV>标签实现3列网站的最佳方式?

我正在使用这样的布局开发一个3列网站:

    <div id='left'   style='left:      0; width: 150px; '> ... </div>
    <div id='middle' style='left:  150px; right: 200px'  > ... </div>
    <div id='right'  style='right:     0; width: 200px; '> ... </div>
Run Code Online (Sandbox Code Playgroud)

但是,考虑到默认的CSS'position'属性<DIV>'s是'静态',我会<DIV>'s像预期的那样在另一个下面显示.

所以我将CSS属性'position'设置为'relative',并将'middle'和'right'的'top'属性更改<DIV>'s为 - (减去)前面的高度<DIV>.它工作正常,但这种方法给我带来两个问题:

1)即使Internet Explorer 7正确地显示了三列,它仍然保持垂直滚动条,就像<DIV>'s它们一个位于另一个之下,并且在内容结束后存在大量空白区域.我想要那个.

2)这些元素的高度是可变的,所以我真的不知道为每个<DIV>'top'属性设置哪个值; 我不想硬编码.

所以我的问题是,实现这种布局的最佳(简单+优雅)方式是什么?我想避免绝对定位,我也要保持我的设计无表情.

html css layout

20
推荐指数
1
解决办法
5万
查看次数

如何在日期中添加天数,仅考虑工作日(即忽略周末)?

我正在尝试创建一个公式来计算第n个 营业日期(仅周一至周五为工作日).为简单起见,假期并不重要; 只有周末才应该被忽略.

例如:

   +------------------------------------------------------------------
   |   A                B                     C
   +------------------------------------------------------------------
1  |  Starting Date    Business-Day Number   Business Date
2  |  06-Jun-2012      0                     06-Jun-2012
3  |  06-Jun-2012      1                     07-Jun-2012
4  |  06-Jun-2012      2                     08-Jun-2012
5  |  06-Jun-2012      3                     11-Jun-2012    <-- June 9th (Sat) and 10th (Sun) are skipped
6  |  06-Jun-2012      4                     12-Jun-2012
...
Run Code Online (Sandbox Code Playgroud)

该公式将用于填写上面的C栏.我能提出的唯一解决方案是在工作日的桌子上查看vlookup,我觉得有点麻烦.

我有什么想法可以用一个公式去做吗?

(它可以在Excel或OpenOffice-Calc上)

excel date weekday dayofweek openoffice-calc

20
推荐指数
1
解决办法
7万
查看次数

如何使内置容器(集,字符串,列表)线程安全?

从这个问题中理解,如果我想拥有一个set线程安全的,我必须自己实现线程安全部分.

所以我想出来:

from threading import Lock

class LockedSet(set):
    """A set where add() and remove() are thread-safe"""

    def __init__(self, *args, **kwargs):
        # Create a lock
        self._lock = Lock()
        # Call the original __init__
        super(LockedSet, self).__init__(*args, **kwargs)

    def add(self, elem):
        self._lock.acquire()
        try:
            super(LockedSet, self).add(elem)
        finally:
            self._lock.release()

    def remove(self, elem):
        self._lock.acquire()
        try:
            super(LockedSet, self).remove(elem)
        finally:
            self._lock.release()
Run Code Online (Sandbox Code Playgroud)

所以,当然只有add()和remove()在这个实现中是线程安全的.其他方法不是因为它们没有在子类中被覆盖.

现在,模式非常简单:获取锁定,调用原始方法,释​​放锁定.如果我遵循上面的逻辑,我将不得不以set基本相同的方式覆盖所有暴露的方法,例如:

(伪代码)

def <method>(<args>):
    1. acquire lock
    2. try:
    3.     call original method passing <args>
    4. finally:
    5.     release lock …
Run Code Online (Sandbox Code Playgroud)

python multithreading thread-safety

16
推荐指数
1
解决办法
8839
查看次数

Selenium WebDriver:Firefox启动,但不打开URL

我刚刚第一次安装了Selenium,而我开始时遇到了麻烦.

安装很顺利pip:

pip install selenium
Run Code Online (Sandbox Code Playgroud)

我可以import selenium在Python中.

现在我正在尝试运行以下示例脚本:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
Run Code Online (Sandbox Code Playgroud)

Firefox会打开,但它不会导航到" http://www.python.org "(类似于此问题中描述的行为- 它只显示一个空白页面)

大约60秒没有任何反应,直到出现以下异常:

Traceback (most recent call last):
  File "selenium-test.py", line 4, in <module>
    driver = webdriver.Firefox()
  File "/home/usr1/.local/lib/python2.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 61, in __init__
    desired_capabilities=capabilities)
  File "/home/usr1/.local/lib/python2.6/site-packages/selenium/webdriver/remote/webdriver.py", line 72, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/home/usr1/.local/lib/python2.6/site-packages/selenium/webdriver/remote/webdriver.py", line 114, in start_session
    'desiredCapabilities': desired_capabilities,
  File "/home/usr1/.local/lib/python2.6/site-packages/selenium/webdriver/remote/webdriver.py", line 165, in execute
    self.error_handler.check_response(response)
  File "/home/usr1/.local/lib/python2.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 136, in …
Run Code Online (Sandbox Code Playgroud)

python selenium selenium-webdriver

13
推荐指数
1
解决办法
3万
查看次数

pprint():如何使用双引号显示字符串?

如果我使用打印字典pprint,它总是在单引号(')周围包装字符串:

>>> from pprint import pprint
>>> pprint({'AAA': 1, 'BBB': 2, 'CCC': 3})
{'AAA': 1, 'BBB': 2, 'CCC': 3}
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉pprint使用双引号(")?我想有以下行为:

>>> from pprint import pprint
>>> pprint({'AAA': 1, 'BBB': 2, 'CCC': 3})
{"AAA": 1, "BBB": 2, "CCC": 3}
Run Code Online (Sandbox Code Playgroud)

python pretty-print pprint

12
推荐指数
1
解决办法
4836
查看次数

离线html5验证器

我想通过HTML5验证器传递我们正在构建的Web应用程序的几页.我找到了几种"在线"验证工具,但出于隐私原因,我宁愿不上传我们的页面进行检查.

你知道任何离线 HTML5验证工具/库吗?

validation html5 w3c-validation

12
推荐指数
1
解决办法
4532
查看次数

如何获得Python多处理池剩余的"工作量"?

到目前为止,每当我需要使用时,multiprocessing我都是通过手动创建"进程池"并与所有子进程共享工作队列来完成的.

例如:

from multiprocessing import Process, Queue


class MyClass:

    def __init__(self, num_processes):
        self._log         = logging.getLogger()
        self.process_list = []
        self.work_queue   = Queue()
        for i in range(num_processes):
            p_name = 'CPU_%02d' % (i+1)
            self._log.info('Initializing process %s', p_name)
            p = Process(target = do_stuff,
                        args   = (self.work_queue, 'arg1'),
                        name   = p_name)
Run Code Online (Sandbox Code Playgroud)

这样我就可以在队列中添加东西,这些东西将由子进程使用.然后,我可以通过检查以下内容来监控处理的进度Queue.qsize():

    while True:
        qsize = self.work_queue.qsize()
        if qsize == 0:
            self._log.info('Processing finished')
            break
        else:
            self._log.info('%d simulations still need to be calculated', qsize)
Run Code Online (Sandbox Code Playgroud)

现在我认为这multiprocessing.Pool可以简化很多代码.

我无法找到的是如何监控仍有待完成的"工作量".

请看以下示例:

from multiprocessing import …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing pool process multiprocessing

9
推荐指数
1
解决办法
8082
查看次数