小编Hen*_*ter的帖子

为什么NetBeans不能为我的某些项目找到CopyLibs?

今天早上我遇到了一个令人讨厌的问题,花了我几个小时试图追查它.我用两个NetBeans项目继承了一些代码,A并且B.他们都建立并成功运作 ; 没有复杂的Ant构建任务; 只是默认的IDE设置.

这两个项目共享大量代码,因此我将其分解为一个新的第三个项目Common.解析引用等后,NetBeans报告没有错误.一切似乎都很好.我Common毫不费力地建立了这个项目.然后事情变得怪异.

突然,当我尝试建立项目AB,他们编译就好了-但在年底建立,每一个休息用了同样的错误:

Copying 1 file to C:\Projects\projectName\build
C:\Projects\projectName\nbproject\build-impl.xml:723: The following error occurred while executing this line:
C:\Projects\projectName\nbproject\build-impl.xml:543: taskdef class org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs cannot be found
 using the classloader AntClassLoader[]
BUILD FAILED (total time: 3 seconds)
Run Code Online (Sandbox Code Playgroud)

所有.class文件都显示出来build/classes,其他一切似乎都很顺利,但没有任何dist文件进入文件夹.所以我开始寻找CopyLibs问题.

人们建议确保org-netbeans-modules-java-j2seproject-copylibstask.jarproject.properties文件(它是)中正确引用,并在<userhome>/.netbeans/version/build.properties文件中引用(它是).该库确实存在于它所引用的所有位置; 事实上,NetBeans似乎./lib默认将此jar的副本放入所有Java项目的文件夹中.我尝试制作全新的项目并手动提供资源,但无济于事.我很神秘.

我在这里寄希望于:

  • 也许有人可以首先让我了解一下这是如何发生的,以及如何避免它.
  • 也许有人可以告诉我为什么只有某些项目会破坏 …

ant netbeans build

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

Python中的乘法

我不知道如何在python中繁殖.

如果我这样做:

price = 1 * 9
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

111111111
Run Code Online (Sandbox Code Playgroud)

答案需要是9(1x9=9)

如何使其正确倍增?

python

11
推荐指数
3
解决办法
15万
查看次数

为什么对魔术方法的显式调用比"含糖"语法慢?

当我遇到一组奇怪的时序结果时,我正在搞乱一个小的自定义数据对象需要可以清洗,可比较和快速.这个对象的一些比较(和散列方法)只是委托给一个属性,所以我使用的是:

def __hash__(self):
    return self.foo.__hash__()
Run Code Online (Sandbox Code Playgroud)

但经过测试,我发现它hash(self.foo)明显更快.出于好奇,我测试__eq__,__ne__和其他神奇的比较,才发现所有的人跑得更快,如果我用含糖的形式(==,!=,<等).为什么是这样?我认为加糖形式必须在引擎盖下进行相同的函数调用,但也许情况并非如此?

Timeit结果

设置:围绕控制所有比较的实例属性的薄包装器.

Python 3.3.4 (v3.3.4:7ff62415e426, Feb 10 2014, 18:13:51) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import timeit
>>> 
>>> sugar_setup = '''\
... import datetime
... class Thin(object):
...     def __init__(self, f):
...             self._foo = f
...     def __hash__(self):
...             return hash(self._foo)
...     def __eq__(self, other):
...             return self._foo …
Run Code Online (Sandbox Code Playgroud)

python performance syntactic-sugar magic-methods

11
推荐指数
1
解决办法
313
查看次数

PIL ImageDraw.textsize返回不正确的高度

我遇到了PIL的ImageDraw模块的问题,特别是Draw.textsize方法.该方法应该采用字符串和字体,并返回字符串在以该字体呈现时将占用的宽度和高度.它似乎在它返回的高度上有一个下限,但是:我无法说服它返回低于它的任何东西43.这是一个示例(链接),用于显示我正在查看的内容(基于返回的宽度和高度在文本周围绘制的边界框),以下是生成它的代码:

from PIL import Image, ImageDraw, ImageFont # PIL 1.1.7; Python 2.6.6

im = Image.open(r'C:\test\blank.png').convert('RGB')
draw = ImageDraw.Draw(im)

TEXTCOLOR = (0, 0, 0)
X = 10
Y = 3

for fontsize in xrange(8, 51):
    # Other fonts behave the same way
    font = ImageFont.truetype('Arial.ttf', fontsize)

    text = 'Hello, World! Size %d' % fontsize

    width, height = draw.textsize(text, font=font)
    print 'Font size %d: %d x %d' % (fontsize, width, height)

    bbox = [(X, Y), (X+width, …
Run Code Online (Sandbox Code Playgroud)

python python-imaging-library

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

使用PyPDF2添加书签

PyPDF2的文档声明可以将嵌套书签添加到PDF文件中,并且代码出现(在阅读时)以支持这一点.

将书签添加到根树很容易(参见下面的代码),但我无法弄清楚我需要传递什么作为parent创建嵌套书签的参数.我想创建一个像这样的结构:

Group A
    Page 1
    Page 2
Group A
    Page 3
    Page 4 
Run Code Online (Sandbox Code Playgroud)

这可能吗?

将书签添加到树根的示例代码:

#!/usr/bin/env python
from PyPDF2 import PdfFileWriter, PdfFileReader
output = PdfFileWriter() # open output
input = PdfFileReader(open('input.pdf', 'rb')) # open input
output.addPage(input.getPage(0)) # insert page
output.addBookmark('Hello, World', 0, parent=None) # add bookmark
Run Code Online (Sandbox Code Playgroud)

PyPDF2 addBookmark功能:https://github.com/mstamy2/PyPDF2/blob/master/PyPDF2/pdf.py#L517

python pdf

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

添加PDF文档链接

我需要以编程方式分析和组合几个(数百个)PDF文档,并以专门的方式将页面链接在一起.每个PDF都包含链接所属的每个位置的文本,指示它应链接到的位置.我正在使用pdfminer提取链接所在的位置和文本; 现在我只需要实际创建这些链接.

我做了一些研究并得出结论认为PyPDF2可以做到这一点.无论如何,有一种看似简单的addLink方法可以宣称完成工作.我无法让它发挥作用.

from PyPDF2 import PdfFileWriter
from PyPDF2.pdf import RectangleObject

out = PdfFileWriter()

out.insertBlankPage(800, 1000)
out.insertBlankPage(800, 1000)

# rect = [400, 400, 600, 600] # This doesn't seem to work either
rect = RectangleObject([400, 400, 600, 600])
out.addLink(0, 1, rect) # link from first to second page

with open(r'C:\temp\test.pdf', 'wb') as outf:
    out.write(outf)
Run Code Online (Sandbox Code Playgroud)

上面的代码生成了一个漂亮的两页PDF,其中没有任何内容,至少据我所知.有没有人知道如何实现这一目标?或者至少表明我哪里出错了?

只要库是免费许可的,解决方案就不必使用PyPDF2.严格地说,Python甚至不是一个要求,但是将它放入我当前的结构并且不用另一种语言来攻击它会很好.

python pdf pdf-generation pypdf

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

性能差异:obj .__ setitem __(x,y)与obj [x] = y?

我正在编写一个dict带属性访问的简单子类,当我进行优化时,我偶然发现了一些看起来很奇怪的东西.我原本写的__getattr____setattr__方法的简单别名self[key]等,但后来我想它应该是更快地打电话self.__getitem__self.__setitem__直接,因为他们大概会在引擎盖下被称为[key]符号.出于好奇,我计算了两个实现,并发现了一些惊喜.

以下是两种实现方式:正如您所看到的,这里没有太多内容.

# brackets
class AttrDict(dict):
    def __getattr__(self, key):
        return self[key]
    def __setattr__(self, key, val):
        self[key] = val

# methods
class AttrDict(dict):
    def __getattr__(self, key):
        return self.__getitem__(key)
    def __setattr__(self, key, val):
        self.__setitem__(key, val)
Run Code Online (Sandbox Code Playgroud)

直觉上,我预计第二个实现会稍快一些,因为它可能会跳过从括号表示法转换为函数调用的步骤.但是,这并不是我的timeit结果所显示的.

>>> methods = '''\
... class AttrDict(dict):
...     def __getattr__(self, key):
...         return self.__getitem__(key)
...     def __setattr__(self, key, val):
...         self.__setitem__(key, val)
... o = AttrDict()
... o.att = 1 …
Run Code Online (Sandbox Code Playgroud)

python performance

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

将列表传递给类python

我有这个简单的课程:

class revs:
    def __init__(self, rev, us, accs = []):
        self.rev = rev
        self.us = us
        self.accs = accs
Run Code Online (Sandbox Code Playgroud)

我有这段代码将值赋予列表并且在循环内部

rev, usu = cada_l.split("|")
acct = each_l[:2].strip()
list_acct.append(acct)
Run Code Online (Sandbox Code Playgroud)

最后,我创建了一个dict,来管理这样的转速列表:

drevs = {}
cada = revs(rev, us, list_acct)
drevs[cada.rev] = cada
Run Code Online (Sandbox Code Playgroud)

并且它与rev和我们一起正常工作,但是list_acct正在更新所有实例:

drevs['1'].rev
'1'
drevs['2'].rev
'2'
drevs['1'].us
'user1'
drevs['2'].us
'user2'
drevs['1'].accs
'["Doc1","Doc2"]'
drevs['2'].accs
'["Doc1","Doc2"]'
Run Code Online (Sandbox Code Playgroud)

如果我改变list_acct.clear(),所有实例中的值都是清楚的,我仍然是Python的新手,这让我很困惑.

谢谢

python python-3.x

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

ImportError:没有名为django.core.wsgi的模块

我正在将一个Web应用程序从Windows环境移动到CentOS 5.11和Apache,并且安装500完所有内容后,当我尝试加载该站点时,我收到了一个.错误日志显示:

mod_wsgi (pid=5461): Target WSGI script '/usr/local/treehouse/wsgi/index.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=5461): Exception occurred processing WSGI script '/usr/local/treehouse/wsgi/index.wsgi'.
Traceback (most recent call last):
  File "/usr/local/treehouse/wsgi/index.wsgi", line 11, in <module>
    from django.core.wsgi import get_wsgi_application
ImportError: No module named 'django.core.wsgi'
Run Code Online (Sandbox Code Playgroud)

我发现了这个问题(以及相关问题),这个问题似乎很相似,但没有一个问题可以解决这个问题.我没有运行virtualenv,并且django似乎安装正确,因为我可以运行有问题的声明:

>>> from django.core.wsgi import get_wsgi_application
Run Code Online (Sandbox Code Playgroud)

在交互式Python解释器中它工作得很好.这是导致错误的脚本(它只是index.wsgi你在任何地方看到这个东西的默认值):

import os, sys
sys.path.append('/usr/local/treehouse/apple')
sys.path.append('/usr/local/treehouse/apple/apple')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apple.settings")

from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)

显然最后一行会导致错误,但这是有趣的部分:最后一行仍然是问题,即使我在它上面添加它: …

python apache django mod-wsgi centos

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

搁置对只读多处理不安全吗?

shelve模块的文档根据限制做出以下声明:

搁置模块不支持对搁置对象的并发读/写访问。(多个同时读取访问是安全的。)

据我所知,这意味着只要我不尝试让多个进程一次写入单个架子,我就应该清楚。使用同一个架子作为只读缓存的多个进程应该是安全的。对?

显然不是。经过一番挣扎,我最终得到了一个测试用例,该用例在从架子上异步读取时似乎表现出一些非常糟糕的行为。以下脚本:

  1. 创建 aShelf并用"i" : 2*ifori从 1 到 10填充它。
  2. 读回所有这些值,以确保它们被正确存储。
  3. 生成进程以从架子文件中检索每个键的值,并报告是否检索到值。

    import multiprocessing
    import shelve
    
    SHELF_FILE = 'test.shlf'
    
    def store(key, obj):
        db = shelve.open(SHELF_FILE, 'w')
        db[key] = obj
        db.close()
    
    def load(key):
        try:
            db = shelve.open(SHELF_FILE, 'r')
            n = db.get(key)
            if n is not None:
                print('Got result {} for key {}'.format(n, key))
            else:
                print('NO RESULT for key {}'.format(key))
        except Exception as e:
            print('ERROR on key {}: {}'.format(key, e)) …
    Run Code Online (Sandbox Code Playgroud)

python persistence shelve multiprocessing

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