小编Ago*_*Ago的帖子

使用python在不同的virtualenv中运行子进程

假设我在2种不同的虚拟环境中安装了2个不同版本的应用程序.myapp v1.0和myapp v2.0.

现在我想比较一下.比较是用python本身编写的.最好的方法是什么?我们假设我可以单独运行它们并且都写一个输出文件,我可以稍后比较.

一种方法是编写一个bash脚本(这就是我目前所拥有的).我激活一个virtualenv,运行myapp v1.0,激活另一个virtualenv,运行myapp v2.0.稍后在这些文件上运行比较模块.但是我想在那里添加更多的动态(采用一些可选的参数等),使用python会更容易.

编辑:

目前我有类似的东西(一个bash脚本):

source virtualenv1/bin/activate
python my_script.py
deactivate

source virtualenv2/bin/activate
python my_other_script.py
deactivate

python my_comparison_script.py
Run Code Online (Sandbox Code Playgroud)

相反,我只想这样做:

python my_comparison_script.py
Run Code Online (Sandbox Code Playgroud)

我的脚本将在此内部运行.

python virtualenv

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

python setup.py配置在自定义目录中安装文件

我想创建一个setup.py,它将我的文件安装到自定义目录中.我有一个特定的前缀,我希望得到以下结果:

/my/prefix/
  bin/
    script.sh
  libexec/
    one.py
    two.py
    ...
  lib/pythonX.Y/site-packages/
    package/...
Run Code Online (Sandbox Code Playgroud)

我的初始项目如下:

/
  script.sh
  one.py
  two.py
  ...
  setup.py
  package/...
    __init__.py
    ...
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?我希望能够稍后安装它,例如:

python setup.py install --prefix=/my/prefix
Run Code Online (Sandbox Code Playgroud)

我可以将"package"很好地安装在正确的目录中,因为lib/pythonX.Y/site-packages在--prefix下是默认位置.但有没有一种干净的方法将script.sh变成"bin"和其他python文件到"libexec"?我认为实现这一目标的唯一方法是在我的setup.py脚本中手动复制这些文件.可能有更清洁,更标准的方法吗?

(编辑)

我最终得到了setup.py:

setup(name='mylib',
  scripts=['script.sh'],
  data_files=[('libexec', ['one.py', 'two.py'])]
)
Run Code Online (Sandbox Code Playgroud)

当然,你可以迭代libexec的所有python文件,但我只需要2-3个python文件.

(EDIT2)

另外,我可以使用以下set.cfg:

[install]
prefix=/my/prefix
Run Code Online (Sandbox Code Playgroud)

而不是python setup.py install --prefix=/my/prefix我可以做:

python setup.py install
Run Code Online (Sandbox Code Playgroud)

python installation configuration setup.py

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

将自定义值传递给记录器而不是每条消息

我想记录用户会话。目前代码如下(省略设置formatter和handlers):

logger = logging.getLogger("component")
logger.info("message", extra={"session": 123})
logger.debug("debug", extra={"session": 123})
Run Code Online (Sandbox Code Playgroud)

如果要记录多条消息,则每次都发送这些额外信息会很烦人。实现类似目标的最佳/最干净/最Python式的方法是什么:

logger = logging.getLogger("component")
# for example:
logger.addExtra({"session": 123})
logger.info("message") # extra would be added automatically
logger.debug("debug") # extra would be added automatically
Run Code Online (Sandbox Code Playgroud)

我可以考虑扩展记录器并覆盖记录方法。

python logging python-3.x

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

如何构建一个地方的开放时间?可能还有一个本体论吗?

有没有人知道任何指定场所开放时间的本体论?例如,我有一个博物馆,有两个季节.淡季(指定赛季开始和结束),平日开放时间为10.00 - 18.00,周六开放时间为10-16(星期日关闭),旺季开放时间为平日10-20,周末开放时间为10-18.

如果没有本体论,可能有人有经验,如何最好地构建这样的信息?

我在RDF中描述信息.但是欢迎任何评论(即使您拥有保存给定数据的关系数据库).

谢谢

ontology

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

将python setup.py安装到替代路径中找不到安装的软件包

我有一个测试安装文件,是为简单的“ hello world”脚本制作的。我有一个mytest具有功能的包hello。现在,我有一个非常简单的方法setup.py。如果我刚跑步,一切都会很好python setup.py install。但是,如果我想将lib安装到主文件夹(python setup.py install --home=/home/blah)中,则该软件包不再可用(import mytest在python中运行给我ImportError: No module named mytest)。

我应该手动将pth文件添加到site-packages文件夹吗?我尝试了一下(使用contents /home/blah/lib/python放置了我的包裹),并且导入mytest效果很好。不应该自动完成吗?还是我错过了什么?

编辑:

安装输出:

ago @ dellbert:〜/ py / mytest-0.1 $ python setup.py install --home = / home / ago / py /
运行安装
运行构建
运行build_py
复制src / mytest / mytest.py-> build / lib.linux-x86_64-2.6 / mytest
运行build_scripts
复制和调整src / main.py-> build / scripts-2.6
运行install_lib
复制build / lib.linux-x86_64-2.6 / …

python install importerror setup.py

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

distutils"不是常规文件 - skipped"

我有一个非常简单的设置:

from distutils.core import setup

setup(name='myscripts',
      description='my scripts',
      author='Ago',
      author_email='blah',
      version='0.1',
      packages=['myscripts']
      )

myscripts文件夹包含大约10个python文件.如果我只执行我的main.py文件(可执行文件,它使用这些myscripts文件),Everthing工作正常.现在我尝试做: python setup.py sdist

但我得到:

running sdist
warning: sdist: missing required meta-data: url
reading manifest file 'MANIFEST'
creating myscripts-0.1
making hard links in myscripts-0.1...
'file1.py' not a regular file -- skipping
hard linking setup.py -> myscripts-0.1
'file2.py' not a regular file -- skipping
tar -cf dist/myscripts-0.1.tar myscripts-0.1
gzip -f9 dist/myscripts-0.1.tar
removing 'myscripts-0.1' (and everything under it)

文件file1.pyfile2.py其他文件一样规则.有什么建议?

python installation distutils

4
推荐指数
1
解决办法
2320
查看次数