如何独立地在OSX狮子/系统/库/框架的安装Python 2.7.x?(How to install

2019-08-17 04:17发布

是否有建立和下/系统/库/框架上的任何安装Python 2.7.x所以它没有直接依赖任何一种方式? (IOW,例如Python的应后也保持工作sudo chmod 000 /System/Library/Frameworks 。)

我认为这将是足以省略--enable-framework在运行的时间标志./configure ,但我错了:如果我这样做所产生的Python仍然有大量的依赖于框架下/系统/库/框架包括,当然,/System/Library/Frameworks/Python.framework。 (IOW,人们想知道,如果有有和没有选择安装任何区别--enable-framework 。)

Answer 1:

是的, --enable-framework有差别构建和安装Python时。 如果没有--enable-framework ,Python是作为一个传统的“UNIX风格”通过安装在默认情况下建立建/usr/local/ ,但可以与改变--prefix=选项来./configure--enable-framework构建,默认情况下,被安装到一个Python /Library/Frameworks ,虽然这可通过指定到其他路径被改变--enable-framework 。 但是,任何Python构建将取决于由操作系统提供的其他库和框架。 这个是正常的。 为什么你不担心吗?

更新:这很容易避免使用苹果提供的系统蟒蛇,如那些在/ usr / bin和它的共享组件都在/System/Library/Frameworks/Python.frameworks,只是通过安装另一个Python 2.7和不使用/ USR /斌/ python2.7。 但是,这并不意味着你应该还是能避免使用其他的系统框架。

这就是说,存在一个公知的问题在OS X 10.6 10.8通过Apple提供框架所使用的Python:即Tk的8.5,被Python Tkinter的应用,包括IDLE使用。 幸运的是,这是很容易解决这一点。 像Python,您可以安装的Tcl 8.5和Tk 8.5框架成一个新的,第三方版本/Library/Frameworks和一些Python发行版,如从python.org二进制安装程序,会使用它们。 我们建议ActiveTcl分配,如果你能够使用它。 见http://www.python.org/download/mac/tcltk/以获取更多信息。

此外,要知道,你需要安装单独的版本Distribute (或setuptools ), pip (如果使用的话),和/或virtualenv你有Python中的每个实例。 不要落入使用的陷阱Apple提供easy_install在命令中/usr/bin/这是系统的蟒蛇。

进一步更新:随着国家进一步细化

避免/S/L/F/Python.framework下所有的东西。”我已经尝试过类似你的描述,但由此产生的安装仍然/S/L/F/Python.framework下依靠的东西

所有我能做的就是重申,建立你自己的Python,无论是“UNIX”建设,“共享”建设,或“框架”建设,得到的Python的应该是完全独立的东西/System/Library/Frameworks/Python.framework 。 如果不,出事了在构建或你是如何执行Python。 将需要更多的细节,以确定什么错误,至少是这样的:

/path/to/your/python -c "import sys, pprint; print(sys.version); print(sys.executable); pprint.pprint(sys.path)"

如果你建了Python,我们需要看到完整的configure ,并make命令。 但是,这将是进入不是真的适合StackOverflow的本地化调试。

(!)最后更新:在一个框架打造, --enable-framework=/path/to选项来configure使用了“前缀”作为框架和两个辅助目录安装“前缀”的位置,如果你坚持使用路径为此在Library/Frameworks 。 所以,如果你使用:

./configure --enable-framework=/baz/quux/Library/Frameworks && make && make install

它应该导致:

/baz
    quux
        Applications
            Python 2.7
                Build Applet.app
                IDLE.app
                ...
        Library
            Frameworks
                Python
                    Version
                        2.7
                            Headers/
                            Python
                            ...
                            Resources/
                            bin
                                ...
                                2to3
                                idle2.7
                                ...
                                python
                                python2
                                python2.7
                                ...
                            include/
                            lib/
                            share/
        bin
            2to3 -> ...bin/2to3
            ...
            idle2.7 -> ...bin/idle2.7
            ...
            python -> ...bin/python
            ...

顶级bin目录是有点退化,真的只是混淆的问题。 它包含符号链接到这个框架中的可执行文件bin目录。 这就是被安装在/usr/local/bin中,默认框架的构建。 使用它的一个问题是,安装的Distutils脚本将在默认情况下,得到安装在框架bin目录,并在顶级目录将不会有一个别名为他们。 这就是为什么我们建议你把框架bin目录在shell的头PATH ,只是忽略了顶级bin

如果--prefix=/foo/bar被添加到以前的configure ,它会使用前缀路径为根的残留顶级bin目录。 在上面的例子,该顶层bin目录将被安装而不是在:

/foo
    bar
        bin
            2to3 -> ...bin/2to3
            ...
            idle2.7 -> ...bin/idle2.7
            ...
            python -> ...bin/python
            ...

否则,它应该没有任何效果。



文章来源: How to install Python 2.7.x independently of /System/Library/Frameworks under OSX Lion?