我正在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脚本),其输出似乎打破了我的终端.执行完成后,输入的反馈消失了(我看不到我正在键入的内容),也没有显示换行符.如果终端通过远程启动出现这种情况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.
我有什么想法可以防止这种情况发生?
我正在尝试使用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) 我正在使用这样的布局开发一个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'属性设置哪个值; 我不想硬编码.
所以我的问题是,实现这种布局的最佳(简单+优雅)方式是什么?我想避免绝对定位,我也要保持我的设计无表情.
我正在尝试创建一个公式来计算第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上)
我从这个问题中理解,如果我想拥有一个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) 我刚刚第一次安装了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) 如果我使用打印字典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) 我想通过HTML5验证器传递我们正在构建的Web应用程序的几页.我找到了几种"在线"验证工具,但出于隐私原因,我宁愿不上传我们的页面进行检查.
你知道任何离线 HTML5验证工具/库吗?
到目前为止,每当我需要使用时,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)