代码之家  ›  专栏  ›  技术社区  ›  Mike Cook

从C调用Pyenv-Python#

  •  1
  • Mike Cook  · 技术社区  · 7 年前

    我试图通过命令行进程从C#运行Python。

    System.Diagnostics.Process proc = new System.Diagnostics.Process {
        StartInfo = new System.Diagnostics.ProcessStartInfo {
            FileName = "/Users/username/.pyenv/shims/python",
            Arguments = cmd+" "+args,
            UseShellExecute = false,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            CreateNoWindow = true
        }
    };
    

    我使用 which :

    username$ which python
    /Users/username/.pyenv/shims/python
    

    但是,运行 python --version 从终端,然后再次通过C#过程,产生不同的结果:

    username$ python -V
    Python 2.7.11
    

    和C#:

    Python 2.7.10
    

    我理解基本问题——它调用的是Python的另一个版本,可能是来自苹果的基本版本。但我不明白的是 为什么? ,因为据我所知,我告诉它直接从pyenv调用python。有没有办法让C#使用我在终端上使用的同一个python可执行文件?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Samir Talwar PruthviRaj Reddy    7 年前

    我敢打赌 python shim依赖于您环境中的其他内容,您可能应该弄清楚它最终运行的是什么,然后直接调用它。

    根据 pyenv documentation ,可能位于:

    $(pyenv root)/versions/2.7.11/bin/python
    

    您还可以通过使用 set -x ,并查看命令跟踪:

    (set -x; python --version)