2011-12-13 50 views
13

Tôi muốn thêm một số tùy chọn dòng lệnh vào mã khởi chạy python để thực sự gọi trình bao ipython. Làm thế nào để làm điều đó?Làm cách nào để khởi chạy ipython từ trình bao, bằng cách chạy 'python ...'?

+10

Bạn có thể giải thích vấn đề * thực * của mình không? Ý tôi là, vấn đề thực tế nào là hack này phải giải quyết? –

+0

Tôi sử dụng một IDE có hỗ trợ giới hạn cho một trình bao tương tác để chạy tập lệnh của bạn (pycharm) và tôi muốn có thể chạy các tập lệnh theo cách tương tác hơn, như trong IEP. – Shwouchk

+0

Bản sửa lỗi sẽ hoạt động trong môi trường cửa sổ cũng như – Shwouchk

Trả lời

21

Để bắt đầu IPython vỏ trực tiếp bằng Python:

from IPython import embed 

a = "I will be accessible in IPython shell!" 

embed() 

Hoặc chỉ đơn giản là chạy nó từ dòng lệnh:

$ python -c "from IPython import embed; embed()" 

embed sẽ sử dụng tất cả các biến cục bộ bên trong trình bao.

Nếu bạn muốn cung cấp người dân địa phương tùy chỉnh (biến thể truy cập vào vỏ) hãy nhìn vào IPython.terminal.embed.InteractiveShellEmbed

+0

Tôi không còn sử dụng môi trường hoặc hệ điều hành đó nữa, nhưng tôi nghĩ rằng điều này sẽ có hiệu quả. Cảm ơn! – Shwouchk

2

Nó không phải là hoàn toàn rõ ràng những gì bạn có nghĩa là bởi "một mã khởi động python"; Tôi cho rằng điều này đề cập đến mã trình bao mà bạn sử dụng để khởi chạy Python.

Trên Unix, bạn có thể sử dụng alias để thay thế một lệnh cho người khác:

[email protected]:~$ alias python=ipython 
[email protected]:~$ python 
Enthought Python Distribution -- http://www.enthought.com 

Python 2.7.1 |EPD 7.0-2 (64-bit)| (r271:86832, Nov 29 2010, 13:51:37) 
Type "copyright", "credits" or "license" for more information. 

IPython 0.10.1 -- An enhanced Interactive Python. 
?   -> Introduction and overview of IPython's features. 
%quickref -> Quick reference. 
help  -> Python's own help system. 
object? -> Details about 'object'. ?object also works, ?? prints more. 

In [1]: 

Nếu đây không phải là những gì bạn muốn, xin vui lòng làm rõ câu hỏi của bạn.

+0

Cảm ơn, nhưng tôi cần điều này để làm việc trên các cửa sổ ... – Shwouchk

6

Để thực hiện chính xác những gì bạn yêu cầu, tức là thêm các tùy chọn dòng lệnh để một invocation python để thực sự gọi IPython, bạn có thể làm điều này:

python -c 'import subprocess; subprocess.call("ipython")' 

Tôi không thể tưởng tượng, tuy nhiên, bất cứ hoàn cảnh nơi này Sẽ hữu ích.

+0

Chính xác tôi nếu tôi sai, nhưng theo cách này bất kỳ lệnh được thông qua và tập tin kịch bản sẽ vẫn chạy trong python và không phải ipython, phải không? – Shwouchk

+0

@Shwouchk: Câu hỏi ban đầu của bạn cung cấp rất ít thông tin - câu trả lời này là dự đoán tốt nhất tôi có thể đưa ra. Từ những nhận xét đến câu hỏi ban đầu của bạn, tôi nghĩ rằng giải pháp này sẽ không giúp bạn, nhưng làm thế nào để thử? –

+0

Điều này thực sự cố định một vấn đề liên quan cho tôi chạy ipython từ một dấu nhắc emacs, mà tôi không thể nếu không có được chính xác tuôn ra đầu ra cho bộ đệm emacs. – flatline

1

Tôi nghĩ bạn có nghĩa là một cái gì đó giống như python C:\Python27\Scripts\ipython-script.py

2

Có lẽ một tùy chọn được chỉ để nhúng ipython trong mã của bạn như thế này

def some_function(): 
    some code 

    import Ipython 
    Ipython.embed() 

Khi bạn chạy chức năng trong một số mã nó sẽ khởi động và ipython thiết bị đầu cuối có phạm vi là một trong những chức năng từ nơi nó được gọi.

Các vấn đề liên quan