小编Pau*_*ore的帖子

确保py.test包含sys.path中的应用程序目录

我有一个项目目录结构如下(我认为这很标准):

my_project
    setup.py
    mypkg
        __init__.py
        foo.py
    tests
        functional
            test_f1.py
        unit
            test_u1.py
Run Code Online (Sandbox Code Playgroud)

我正在使用py.test作为我的测试框架,我希望能够py.test testsmy_project目录中运行以运行我的测试.这确实有效,直到我尝试import mypkg在测试中使用(例如)导入我的应用程序代码.那时,我收到错误"没有名为mypkg的模块".在进行一些调查时,似乎py.test运行测试与测试文件的目录sys.path,但不是py.test运行的目录.

为了解决这个问题,我conftest.py在我的tests目录中添加了一个文件,其中包含以下代码:

import sys, os

# Make sure that the application source directory (this directory's parent) is
# on sys.path.

here = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, here)
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但它是确保测试看到应用程序代码的好方法吗?有没有更好的方法来实现这一点,或者我在如何构建项目时做错了什么?

我已经看过其他一些使用的项目py.test(例如,pip但是我看不到代码做了这样的事情,但是运行py.test tests似乎在那里工作.我不知道为什么,但我担心他们可能以更简单的方式取得了同样的结果.

我查看了py.test文档,但是我看不出这个问题的解释或建议的方法来处理它.

python unit-testing pytest

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

如何在Windows上仅安装PostgreSQL的客户端工具?

我在Linux系统上有一个PostgreSQL数据库,我想从我的Windows PC上访问它.但我能找到的唯一Windows二进制文件是完整的安装程序,其中包括数据库服务器和客户端.

是否有可能从任何地方获得PostgreSQL的仅客户端Windows二进制安装?

(澄清一下,我想要标准的PostgreSQL客户端,psql - 不是GUI客户端或独立工具).

windows postgresql

42
推荐指数
7
解决办法
4万
查看次数

shutil.rmtree删除只读文件

我想shutil.rmtree在Python中使用删除目录.有问题的目录包含一个.git控制目录,git标记为只读和隐藏.

只读标志导致rmtree失败.在Powershell中,我会"强制"强制删除只读标志.Python中有相应的东西吗?我真的不想两次走完整棵树,但onerrorrmtree 的论据似乎没有重试这个操作,所以我不能用

def set_rw(operation, name, exc):
    os.chmod(name, stat.S_IWRITE)

shutil.rmtree('path', onerror=set_rw)
Run Code Online (Sandbox Code Playgroud)

python shutil

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

如何在powershell中删除或替换内置别名?

PowerShell包括一个内置的别名diffCompare-Objectcmdlet的.这对我来说真的很烦人,因为我习惯使用Unix diff命令.

有没有办法删除内置diff别名,或以其他方式覆盖它?

我试过了:

  • del alias:diff - 给出错误"Alias未被删除,因为别名diff是常量或只读"
  • set-alias diff diff.exe - 给出类似于上面的错误
  • function diff { diff.exe $args } - 别名优先

如何访问"真正的"差异(无需记住其他名称)?

如果它很重要,这是Powershell 3.我还没有在版本4中尝试过,虽然版本4也有wget别名,但不像diff我可以删除那个...

powershell alias

15
推荐指数
1
解决办法
2289
查看次数

是否可以自定义PowerShell中的错误显示?

我发现标准的Powershell错误显示(红色文字,多行显示)有点分散注意力.可以自定义吗?

powershell customization

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

如何创建一个从管道和命令行接受多个参数类型的函数?

我正在尝试编写一个带有多个参数的函数,这些函数可以来自命令行,也可以来自管道.参数可以是字符串或目录对象.这个想法是以下任何调用应该工作:

Test-VEnv '.\MyPath', '.\AnotherPath'
Test-VEnv (dir)
'MyPath', 'AnotherPath' | Test-VEnv
dir | Test-VEnv
Run Code Online (Sandbox Code Playgroud)

以下代码几乎可以工作:

function Test-VEnv {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true, Position=0,
            ValueFromPipeline=$True,
            ValueFromPipelineByPropertyName=$true)]
        [Alias('FullName')]
        [String[]]$Path
    )

    process {
        foreach ($P in $Path) {
            ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它处理来自管道和命令参数的字符串,并处理来自管道的目录对象(通过ValueFromPipelineByPropertyName和FullName别名).但它不会在命令行上处理目录对象,所以

dir | Where-Object { Test-VEnv $_ }
Run Code Online (Sandbox Code Playgroud)

失败,因为它将目录对象转换为字符串,使用Name属性而不是FullName,后续代码失败.

有谁能告诉我如何实现我想要的?

我知道即使我可以让它工作,它可能不是一个特别好的设计.但据我所知,这就是内置的Test-Path的工作方式,所以我想在发明自己之前尝试遵循标准行为......

powershell arguments argument-passing

11
推荐指数
2
解决办法
8396
查看次数

Excel - 如何使用"标签"列进行过滤

我有一张包含数据的excel表格(游戏Leage of Legends的符文,它的价值):

Name, Type, Price, Effect, ...
Run Code Online (Sandbox Code Playgroud)

我想添加一个我可以过滤的额外列,其中包含标签(很像这里分配给问题的标签).例如,一行可能有"AD,PERLEVEL,RECOMMENDED"标签.我可以简单地将标签放在一个单元格中,逗号分隔如下,并使用"包含"过滤器.但是像Excel 2010的自动过滤器(列出所有正在使用的值,并允许您勾选和取消选择要选择的值)之类的东西就是我所追求的.

是否有可能实现这样的目标?

如果无法使用可勾选列表,我可以使用过滤器搜索来选择值(这样可以实现该部分).如果我能以某种方式显示唯一标签,那就可以完成这项工作.

excel filter

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

我可以在Python 3上提供lxml.etree.parse的URL吗?

文档说我可以:

lxml可以从本地文件,HTTP URL或FTP URL进行解析.它还可以自动检测和读取gzip压缩的XML文件(.gz).

(摘自"Parsers"下的http://lxml.de/parsing.html)

但一个快速的实验似乎暗示:

Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:45:13) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from lxml import etree
>>> parser = etree.HTMLParser()
>>> from urllib.request import urlopen
>>> with urlopen('https://pypi.python.org/simple') as f:
...   tree = etree.parse(f, parser)
...
>>> tree2 = etree.parse('https://pypi.python.org/simple', parser)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "lxml.etree.pyx", line 3299, in lxml.etree.parse (src\lxml\lxml.etree.c:72655)
  File …
Run Code Online (Sandbox Code Playgroud)

python lxml

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

是否存在类似于GNU readline的.Net库?

我正在考虑在C#中编写一个控制台应用程序,我希望将历史,完成和命令行编辑功能纳入GNU readline(但不一定非常广泛!)

是否有.net的现有库提供此类功能?我想一个选择是使用互操作服务来调用GNU readline.但是有原生选择吗?

.net c# readline

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

如何在VS Code中的当前选择上运行外部命令?

我目前正在将编辑器从Vim切换到VS Code.我在vim中喜欢的一个功能是能够在文本区域(:!命令)上运行外部命令.我一直无法在VS Code中找到明显的等价物.

VS Code中是否提供此功能?或者是否有提供它的扩展?

(作为一个更普遍的问题,找到这样的东西的最佳方法是什么?是否有一个网站或任何描述如何在VS Code中执行其他编辑器的常见任务的东西?)

visual-studio-code

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