使MacPorts的Django与Python协同工作

1 投票
4 回答
1751 浏览
提问于 2025-04-16 07:43

我是一名网页开发者,现在需要处理一个django项目。

我在一台macbook pro上运行的是mac OSX 10.6.5。我使用macports安装了django和python 2.6。

现在我遇到了一些问题,可能和我的PATH / PYTHONPATH设置有关,这让我无法运行django。

在终端输入echo $PATH,得到的是:

echo $PATH
/Library/Python/2.6/site-packages:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

而输入echo $PYTHONPATH却什么都没有。

输入sudo port installed得到:

sudo port installed
The following ports are currently installed:
autoconf @2.65_1 (active)
automake @1.11.1_0 (active)
bash-completion @1.1_8
bash-completion @1.2_0 (active)
bzip2 @1.0.5_3+darwin
bzip2 @1.0.6_0 (active)
db46 @4.6.21_6 (active)
expat @2.0.1_0
expat @2.0.1_1 (active)
fontconfig @2.8.0_0+macosx (active)
freetype @2.3.12_0+macosx (active)
gdbm @1.8.3_2 (active)
gettext @0.18_0
gettext @0.18.1.1_2 (active)
gperf @3.0.4_0 (active)
help2man @1.38.2_0 (active)
ImageMagick @6.6.2-0_0+q16 (active)
jpeg @8a_0 (active)
lcms @1.19_2 (active)
libiconv @1.13.1_0 (active)
libpng @1.2.43_0 (active)
libtool @2.2.6b_1+darwin (active)
libxml2 @2.7.7_0 (active)
m4 @1.4.14_0 (active)
ncurses @5.7_0+darwin_10
ncurses @5.7_1 (active)
ncursesw @5.7_0+darwin_10
ncursesw @5.7_1 (active)
openssl @1.0.0b_0 (active)
p5-locale-gettext @1.05_2 (active)
p7zip @9.04_0 (active)
perl5 @5.8.9_0 (active)
perl5.8 @5.8.9_3 (active)
pkgconfig @0.25_0 (active)
py26-distribute @0.6.14_0 (active)
py26-django @1.2.3_0+bash_completion (active)
python26 @2.6.6_0+no_tkinter (active)
readline @6.1.002_0 (active)
sqlite3 @3.7.3_0 (active)
tiff @3.9.2_3+macosx (active)
xorg-bigreqsproto @1.1.0_0 (active)
xorg-inputproto @2.0_0 (active)
xorg-kbproto @1.0.4_0 (active)
xorg-libice @1.0.6_0 (active)
xorg-libsm @1.1.1_0 (active)
xorg-libX11 @1.3.3_0 (active)
xorg-libXau @1.0.5_0 (active)
xorg-libXdmcp @1.0.3_0 (active)
xorg-libXext @1.1.1_0 (active)
xorg-libXt @1.0.8_0 (active)
xorg-util-macros @1.7.0_0 (active)
xorg-xcmiscproto @1.2.0_0 (active)
xorg-xextproto @7.1.1_0 (active)
xorg-xf86bigfontproto @1.2.0_0 (active)
xorg-xproto @7.0.16_0 (active)
xorg-xtrans @1.2.5_0 (active)
zlib @1.2.5_0 (active)

当我输入python时,显示的是:

python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

我很确定这不是正确的版本。

当我尝试检查django是否可以在python中使用时,得到的是:

>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named django
>>> 

有没有人能帮我搞清楚这是怎么回事?我只需要让django运行起来,这样我才能查看和处理我同事发给我的django项目。

提前感谢任何帮助!

4 个回答

1

这真的是通过macports安装的Python解释器吗?我觉得2.6.1听起来像是苹果自带的版本(2.6.1已经很旧了)。

试试这个,

which python

顺便说一下,我不建议通过macports来安装Django。

编辑:macports安装的是2.6.6,问题在于苹果自带的Python在你的路径中排在前面。

python26 @2.6.6_0+no_tkinter (active)

编辑:

我使用的是homebrew安装的Python,默认路径是/usr/local/bin/python。

为了使用这个,我在我的.bashrc文件里加了一行,但你也可以把它放在/etc/profile的最后面。

export PATH=/usr/local/bin:/usr/local/sbin:$PATH

这样做的效果是把我的系统路径前面加上了homebrew安装的位置(/usr/local)。

在你的情况下,应该是你macports安装的Python(2.6.6)的路径。

希望这能帮到你。

1

Python 2.6.1 和 2.6.6 都可以正常使用 Django。不过,如果你想用 2.6.6 的话,记得把它的路径加到你的 PATH 变量里,因为你已经把旧版的 Python 从路径中去掉了。

要让 Django 正常工作,可以把 Django 的位置加到你的 PYTHONPATH 里。在 Mac 上,如果 Django 安装在 /Library/Django-1.2.1 这个地方,就需要在你的 ~/.bash_profile 文件里添加以下内容:
export PYTHONPATH=$PYTHONPATH:/Library/Django-1.2.1
然后运行 source ~/.bash_profile 来刷新设置。

如果这样还是不行,我建议重新安装 Django。我自己没有用过 macports,但用 pip 安装 Python 包一直都很顺利。你可以先删除旧的 Django 文件,然后运行 easy-install pip,接着运行 pip install django,这样就能顺利安装 Django 到你的 site-packages 目录里,这样它就会在你的路径上,可以直接使用了。

3

首先,Macports 会写一个文件叫做 ~/.profile 来设置它的 PATH 变量。如果你已经创建了一个 ~/.bash_profile 文件,那么 ~/.profile 就会被忽略。你需要把内容复制过去。

要查看 Macports 选择的 Python 版本,可以使用:

port select --list python

这会显示类似这样的内容:

Available versions for python:
    none
    python25-apple
    python26-apple
    python27 (active)
    python32

如果你想让 Macports 使用特定的版本,可以使用:

port select --set python python27

这样就能正确设置你的 Python 版本了。现在你可以用 python 的 easy_install 来安装 Django,或者使用 Macports 提供的 Django 版本。

撰写回答