小编Vic*_*lex的帖子

Python setuptools:如何包含配置文件以分发到<prefix>/etc

我怎么写setup.py这样:

  1. 二元蛋分发(bdist_egg)包括一个示例配置文件和
  2. 安装后将其放入{prefix}/etc目录?

示例项目源目录如下所示:

bin/
   myapp
etc/
   myapp.cfg
myapp/
    __init__.py
    [...]
setup.py
Run Code Online (Sandbox Code Playgroud)

setup.py看起来像这样:

from distutils.command.install_data import install_data

packages = ['myapp', ]
scripts = ['bin/myapp',]
cmdclasses = {'install_data': install_data}
data_files = [('etc', ['etc/myapp.cfg'])]

setup_args = {
    'name': 'MyApp',
    'version': '0.1',
    'packages': packages,
    'cmdclass': cmdclasses,
    'data_files': data_files,
    'scripts': scripts,
#    'include_package_data': True,
    'test_suite': 'nose.collector'
}

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

setup(**setup_args)
Run Code Online (Sandbox Code Playgroud)

setuptools安装在构建环境和安装环境中.

'include_package_data'注释掉与否没有帮助.

python setuptools

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

是否可以将规范化空间应用于XPath表达式找到的所有节点?

考虑简单的XML文档:

<html><body>
<table>
<tr><td>   Item 1</td></tr>
<tr><td>  Item 2</td></tr>
</table>
</body></html>
Run Code Online (Sandbox Code Playgroud)

使用XPath /html/body/table/tr/td/text()我们会得到

["   Item 1", "  Item 2"]. 
Run Code Online (Sandbox Code Playgroud)

是否可以修剪空白区域,例如使用normalize-space()函数来获取此空间?

["Item 1", "Item 2"]
Run Code Online (Sandbox Code Playgroud)

normalize-space(/html/body/table/tr/td/text()) 仅产生第一个td标签的修剪内容 ["Item 1"]

xml xpath

10
推荐指数
1
解决办法
4959
查看次数

如何将Python打包为RPM并安装到/opt?

如何从 Python 2.7.2 源创建二进制 RPM 包以安装到非标准前缀(例如 /opt/python27)?

假设以下构建正确。

wget http://python.org/ftp/python/2.7.2/Python-2.7.2.tgz
tar zxvf Python-2.7.2.tgz
cd Python-2.7.2
./configure --prefix=/opt/python27 --enable-shared
make
make test
sudo make install
Run Code Online (Sandbox Code Playgroud)

我想构建一个二进制 RPM,而不是最后一个命令。

python build rpm

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

pytest参数化会话固定装置执行太多次

考虑以下测试代码,该代码将模拟运行结果与预期结果进行比较。运行结果的值取决于提供两个值的参数化灯具参数的值,因此运行结果有两种可能的变体。由于它们都是会话固定装置,因此我们应该期望run_result固定装置仅执行两次。

现在,请看一下测试用例test_run_result,它接收run_result和Expected_result夹具进行比较,并且还接收用两个值参数化的公差夹具。测试用例检查预期结果与结果之间的差异是否在公差范围内。注意,运行不取决于公差。

出于某种原因,我不理解Pytest会执行run_result()夹具三次。你能解释为什么吗?

这是使用pytest vers测试的。2.9.1

顺便说一句,如果未对测试用例进行参数化或使用装饰器而不是夹具对参数进行参数化,则run_result夹具将仅执行两次,即:@ pytest.mark.parametrize('tolerance',[1e-8,1e- 11])。

import pytest

runcounter = 0

@pytest.fixture(scope="session", params=[1e-8, 1e-11])
def tolerance(request):
    """Precision in floating point compare."""
    return request.param

@pytest.fixture(scope='session', params=[1, 2])
def paramfixture(request):
    return request.param

@pytest.fixture(scope="session")
def expected_result(paramfixture):
    return 1 + paramfixture

@pytest.fixture(scope='session')
def run_result(paramfixture):
    global runcounter
    runcounter = runcounter + 1
    print "Run #", runcounter, 'param:', paramfixture
    return 1 + paramfixture

def test_run_result(run_result, expected_result, tolerance):
    print "run_result: %d, expected_result: %d" % (run_result, expected_result)
    assert abs(run_result - expected_result) < tolerance
Run Code Online (Sandbox Code Playgroud)

Pytest屏幕截图:

$ py.test …
Run Code Online (Sandbox Code Playgroud)

python pytest

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

将列附加到 Pandas DataFrame 而不改变原始数据

当我们需要向 DataFrame 添加一列时,我们通常会这样写:

df['newcol'] = 123
Run Code Online (Sandbox Code Playgroud)

这会更改(变异)原始 df 对象,这并不总是需要的。

什么是快速而惯用的方法来做到这一点?这是一种选择,但它比上述分配慢了大约 10。

df2 = concat([df, DataFrame(123, index=df.index, columns=['newcol'])], axis=1)
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

读取以[并以]结尾的JSON数据

我正在使用带有NetBeans插件的Java,称为CODAPPS来检索,解析和显示JSON数据.

我正在关注使用Google Firebase数据库生成的JSON数据的示例,但我使用的是SlashDB.

出于某种原因,来自SlashDB的JSON数据分别以[和开头和结尾].

我收到以下错误:

org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
    at org.json.JSONTokener.syntaxError(JSONTokener.java:433)
    at org.json.JSONObject.<init>(JSONObject.java:198)
    at org.json.JSONObject.<init>(JSONObject.java:325)
    at userclasses.StateMachine.onMain_ButtonAction(StateMachine.java:80)
    at generated.StateMachineBase.handleComponentAction(StateMachineBase.java:572)
    at com.codename1.ui.util.UIBuilder$FormListener.actionPerformed(UIBuilder.java:2831)
    at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:345)
    at com.codename1.ui.Button.fireActionEvent(Button.java:411)
    at com.codename1.ui.Button.released(Button.java:442)
    at com.codename1.ui.Button.pointerReleased(Button.java:530)
    at com.codename1.ui.Form.pointerReleased(Form.java:2578)
    at com.codename1.ui.Form.pointerReleased(Form.java:2514)
    at com.codename1.ui.Component.pointerReleased(Component.java:3119)
    at com.codename1.ui.Display.handleEvent(Display.java:2017)
    at com.codename1.ui.Display.edtLoopImpl(Display.java:1065)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:994)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Picked up _JAVA_OPTIONS: -Xmx4G
BUILD SUCCESSFUL (total time: 15 seconds)
Run Code Online (Sandbox Code Playgroud)

我的JSON数据如下所示:

[
    {
        "description": "Example Fast Festival Motorcycle with Boho Beading", …
Run Code Online (Sandbox Code Playgroud)

java json codenameone slashdb

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

标签 统计

python ×4

build ×1

codenameone ×1

dataframe ×1

java ×1

json ×1

pandas ×1

pytest ×1

rpm ×1

setuptools ×1

slashdb ×1

xml ×1

xpath ×1