智能地使用正确的python解释器

时间:2015-11-24 11:03:29

标签: python

在Makefile中,我使用默认的python调用我的python脚本,它包含我所需的所有模块,如下所示

python test.py

它曾经工作但是其他一些软件包已经向系统添加了一个新的python并在构建期间更改了env PATH以使用这个新的python并且我的Makefile开始失败。

我可以使用如下硬编码的正确python路径,但这不是分发包

时的解决方案
/path/to/correct/python test.py

有没有办法聪明地调用一个包含我所有模块的python解释器。可以检查系统中可用的所有python解释器并测试它们是否具有必要的模块,然后使用该解释器执行脚本

2 个答案:

答案 0 :(得分:2)

使用woocommerce/includes/class-wc-countries.php a循环结合这些结果和一个简单的测试表达式来导入所需的包应该可以解决问题。将所有内容包装在Makefile中,就完成了。

以下是我的机器中的一些示例,您可以使用这些示例来构建解决方案。

describe('Unit testing great quotes', function() {

  var $compile, $rootScope;

  // Load the myApp module, which contains the directive
  beforeEach(module('myApp'));

  // Store references to $rootScope and $compile
  // so they are available to all tests in this describe block
  beforeEach(inject(function(_$compile_, _$rootScope_){
    // The injector unwraps the underscores (_) from around the parameter names when matching
    $compile = _$compile_;
    $rootScope = _$rootScope_;
  }));

  it('Replaces the element with the appropriate content', function() {
    // Compile a piece of HTML containing the directive **I replaced the directive for the controller and view template**
    var element = $compile("<div ng-controller="yourController"><div ng-include="yourViewTemplate"></div></div>")($rootScope);
    // fire all the watches, so the scope expression {{1 + 1}} will be evaluated
    $rootScope.$digest();
    // Check that the compiled element contains the templated content
    expect(element.html()).toContain("lidless, wreathed in flame, 2 times");
  });
});

当然,最好在Makefile中执行which -a python之类的操作,然后使用$ which -a python /usr/miniconda/bin/python /usr/bin/python $ python -c 'import requirement' > /dev/null 2>&1 && echo "This one works" || echo "This one does not work" This one does not work $ python -c 'import sys' > /dev/null 2>&1 && echo "This one works" || echo "This one does not work" This one works 调用可能更简单,更不容易出错。

答案 1 :(得分:0)

经过几年的python使用,我得出结论,指定Python解释器的最好方法是使用这个shebang行:

#!/usr/bin/env python

使用这个Python 3替代

#!/usr/bin/env python3

显然,在没有Cygwin的Windows上,你必须确保&#34;对&#34;一个在PATH

为了安装您的要求,您必须运行:

python -m pip -r requirements.txt

上面的命令是“pip&#39;”的更好选择。因为它避免了你的pip可执行文件可能无法在你想要的同一个python环境中真正安装东西的情况。

另一种解决方案是使用虚拟环境,但这对于快速启动来说可能太多了。