shell子命令只是调用交互式 Python 解释器,因此将 PYTHONSTARTUP UNIX 环境变量指向包含所需导入的文件将起作用。这是顺序:
user@linux$ export PYTHONSTARTUP='/path/to/my/django/pythonStartup.py'; python ./manage.py shell
其中pythonStartup.py是任意命名的,您可以将其命名为任何您喜欢的名称,包括s.py(尽管这可能不是最好的名称)。=:)
您还可以在您的个人.bash_profile中为其创建以下便利别名:
alias django-shell="export PYTHONSTARTUP='/path/to/my/django/pythonStartup.py'; python ./manage.py shell"
然后简单地使用它:
user@linux$ . ${HOME}/.bash_profile # Normally you don't need to do this step.
user@linux$ django-shell
现在,您只需要编辑pythonStartup.py文件以合并您可能需要的对导入行为的任何更改,并且只需运行别名(...无需编辑或重新获取您的.bash_profile)。
以下是当我运行python3 ./manage.py shell时发生的情况,其中 PYTHONSTARTUP 环境变量正确指向我希望导入的文件:
user@linux$ python3 ./manage.py shell
Python 3.5.1 |Anaconda custom (64-bit)| (default, Dec 7 2015, 11:16:01)
Type "copyright", "credits" or "license" for more information.
IPython 4.2.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
Importing base set of modules often used ...
import sys, os, random, pprint, operator
import time, math
import numpy, numpy as np
import numpy.linalg
import scipy, scipy as spimport scipy.optimize
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.pylab as pylab
import pandas as pd
import sklearn.datasets
import sklearn.feature_extraction
import sklearn.linear_model
import sklearn.neighbors
import sklearn.cluster
import sklearn.preprocessing
import sklearn.decomposition
import gensim.models.word2vec
In [1]:
编辑:
我忘记提及的另一个提示。
如果将pythonStartup.py放在 Django 项目的根目录中,则创建别名如下:
alias django-shell="export PYTHONSTARTUP='./pythonStartup.py'; python ./manage.py shell"
允许您cd到您当前正在处理的任何 Django 项目的根目录,并且别名将调用该特定项目的pythonStartup.py。这种方法增加了灵活性。